• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zapis pomiarów na karcie SD
#1
Cześć,
Temat dotyczący zapisów wartości na karcie SD był wielokrotnie sam znalazłem wiele takich rozwiązań każdy podobny do siebie. Jednak u mnie problem jest z samym zgraniem kilku funkcji programu.
Mój projekt ma służyć do pomiarów wiatru za pomocą czujnika wiatru czaszowego z kontaktronem. Do tego wykorzystany będzie wyświetlacz OLED do wyświetlania aktualnej prędkości wiatru. A na końcu pomiar ma być zapisywany na karcie SD w pliku o formacie .txt.


Problem pojawia się w przypadku dodania zapisów dla modułu karty microSD. Program zaczyna się wieszać i nie wykonuje pomiarów oraz nic nie wyświetla.

Czy jest może ktoś kto rzucił by okiem na kod może da się jakoś zgrać wszystkie funkcje programu? 


Kod:
#include <SD.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <SPI.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

File plik;

//Średnica anemometru
float diameter = 2.75;
float mph; //Utworzenie zmiennej mile/godzinę
float kmh; //Utowrzenie zmiennej km/h

// Odczyt obrotĂłw (RPM)
int half_revolution_time = 0; //Utworzenie zmiennej przechowującej
int rpm = 0; //Utworzenie zmiennej RPM (obroty)
unsigned long lastmillis = 0; //Utworzenie zmiennej long lastmilis

void rpm_fan() {
 unsigned long static last_event = 0;
 if (millis() - last_event < 5) {   //debouncing
   return;
 }
 half_revolution_time = (millis() - last_event);
 last_event = millis();
}

void setup() {
 Serial.begin(9600); // Uruchomienie portu szeregowego z prędkością 9600
 pinMode(2, INPUT_PULLUP); // Aktywowanie rezystora podciągającego na pinie 8

 attachInterrupt(digitalPinToInterrupt(2), rpm_fan, FALLING);
 // Przypisanie funkcji rpm_fan przerwania zewnętrznego
 // Przerwanie zostanie wykonane jeśli stan zmieni się z wysokiego na niski (Falling)
 
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
 display.clearDisplay();

 Serial.print("Włączanie karty SD...");
 if(SD.begin(4)){
   
   Serial.println("Błąd karty SD");
   return;
 }
 Serial.println("Karta SD gotowa");
 }
void loop() {

 if (millis() - lastmillis >= 1000) {
   //Aktualizuj co sekundę, będzie to rĂłwnoznaczne z odczytem częstotliwości (Hz)

   lastmillis = millis();          // Aktualizacja lastmillis
   
   noInterrupts();                   // W trakcie kalkulacji wyłącz obsługę przerwań
   rpm = (30000 / half_revolution_time) ;      
   interrupts() ; //Przywróć przerwania
   
   mph = diameter / 12 * 3.14 * rpm * 60 / 5280;//Odczyt prędkości wiatru w milach/godzinę
   mph = mph * 3.5; // Kalibracja błędu odczytu, wartość naleĹźy dobrać we własnym zakresie
   kmh = mph * 1.609;// Zamiana mil/godzinę na km/h
 }
   Serial.print("KMH=\t"); //Przesłanie odczytanych danych do portu szeregowego
   Serial.println(kmh);
   Serial.println();
   
   plik = SD.open("pomiar.txt", FILE_WRITE);
   if (plik){
     plik.println(kmh);
     plik.close();
 }
   display.clearDisplay();
   display.setTextSize(2);
   display.setTextColor(WHITE);
   display.setCursor(0,0);
   display.println("Wind speed");
   display.setTextSize(2);
   display.setCursor(0,17);
   display.print(kmh);
   display.setTextSize(2);
   display.println("km/h");
   display.display();
}
 
Odpowiedź
  


Wiadomości w tym wątku
Zapis pomiarów na karcie SD - przez sawka234 - 13-07-2018, 23:35
RE: Zapis pomiarów na karcie SD - przez es2 - 14-07-2018, 10:26
RE: Zapis pomiarów na karcie SD - przez sawka234 - 14-07-2018, 13:24
RE: Zapis pomiarów na karcie SD - przez es2 - 14-07-2018, 17:12
RE: Zapis pomiarów na karcie SD - przez kaczakat - 15-07-2018, 19:25
RE: Zapis pomiarów na karcie SD - przez es2 - 15-07-2018, 20:56
RE: Zapis pomiarów na karcie SD - przez kaczakat - 15-07-2018, 21:53
RE: Zapis pomiarów na karcie SD - przez es2 - 15-07-2018, 22:29
RE: Zapis pomiarów na karcie SD - przez es2 - 16-07-2018, 06:29
RE: Zapis pomiarów na karcie SD - przez kaczakat - 16-07-2018, 11:55
RE: Zapis pomiarów na karcie SD - przez es2 - 16-07-2018, 13:08
RE: Zapis pomiarów na karcie SD - przez kaczakat - 16-07-2018, 18:33
RE: Zapis pomiarów na karcie SD - przez es2 - 16-07-2018, 19:02
RE: Zapis pomiarów na karcie SD - przez kaczakat - 18-07-2018, 02:42
RE: Zapis pomiarów na karcie SD - przez es2 - 18-07-2018, 09:48
RE: Zapis pomiarów na karcie SD - przez es2 - 18-07-2018, 15:55

Skocz do:


Przeglądający: 1 gości