Hallo Forum,
dies ist mein erster Beitrag in einem großen Forum also bitte etwas Nachsicht, wenn ich Informationen vergessen habe.
Ich möchte eine Wetterstation mit einem Arduino UNO aufbauen. Ich nutze dafür einen DHT22, ein LCD1602, eine DS3231 und ein Micro-SD karten Modul von CATALEX (mehr steht leider nicht auf dem Modul).
Ich bin, was den Arduino angeht, ein ziemlicher Anfänger.
Die Wetterstation soll nacheinander die Temperatur, Luftfeuchtigkeit, Uhrzeit und Datum auf dem LCD anzeigen. Außerdem soll sie 3 mal am Tag die Werte auf die SD Karte schreiben.
Das Anzeigen funktioniert problemlos und auch das beschreiben der SD Karte habe ich geschafft. Dies allerdings nur als Test, d.h. ich habe NUR die SD Karte einbezogen.
Jetzt zu meinem eigentlichen Problem,
beziehe ich die SD Karte mit in den Aufbau und das Programm ein, so habe ich kein Bild mehr oder nur Hieroglyphen auf dem LCD. Außerdem scheint etwas mit meiner Abfrage der Uhrzeit nicht richtig zu sein.
Hat jemand von euch erfahreneren vielleicht einen Tipp für mich?
Ich hoffe das Einfügen von meinem Sketch habe ich richtig gemacht
Danke schon einmal im Voraus
Dominik
#include <DHT.h>
#include <Wire.h>
#define DHTPIN A0 //Pin an welchen die Daten von dem DHT22 gehen
#define DHTTYPE DHT22 //DHT Typ auswählen
DHT dht(DHTPIN, DHTTYPE);
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
#include <LiquidCrystal.h>
LiquidCrystal lcd (5, 6, 7, 8, 9, 10); //Pins die von dem LCD verwendet werden
#include <SD.h>
#include <SPI.h>
File Daten;
void setup()
{
lcd.clear(); //LCD einmal löschen
lcd.begin(16, 2); // verfügbare Spalten und Reihen angeben
dht.begin();
clock.begin();
clock.setDateTime(__DATE__, __TIME__);
SD.begin(10);
//Serial.begin(9600);
//Serial.println("Warten auf SD Karte...");
}
void schreiben(float h, float t)
{
Daten = SD.open("Daten.txt", FILE_WRITE);
if(Daten)
{
Serial.println("Daten werden gespeichert...");
Daten.print("Datum: ");
Daten.println(clock.dateFormat("d m Y", dt));
Daten.print("Uhrzeit: ");
Daten.println(clock.dateFormat("H:i", dt));
Daten.print("Temperatur: ");
Daten.print(t);
Daten.println("°C");
Daten.print("Luftfeuchtigkeit: ");
Daten.print(h);
Daten.println("%");
Daten.close();
}
}
void loop()
{
dt = clock.getDateTime();
String zeit = clock.dateFormat("H:i", dt);
//Einlesen der Werte vom DHT22 in Variablen
float h = dht.readHumidity();
float t = dht.readTemperature();
//Überprüfen, ob die Daten auch Zahlenwerte sind
if (isnan(t) || isnan(h)) //nan = not a number
{
lcd.setCursor(0,0);
lcd.print("Fehler beim");
lcd.setCursor(0,1);
lcd.print("Lesen der Daten!");
}
else
{
//Ausgabe auf dem LCD
lcd.setCursor(3,0);
lcd.print("Temperatur");
lcd.setCursor(5,1);
lcd.print(t);
lcd.print("\xDF");
lcd.print("C");
delay (2500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Luftfeuchtigkeit");
lcd.setCursor(5,1);
lcd.print(h);
lcd.print("%");
delay (2500);
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Uhrzeit");
lcd.setCursor(5,1);
lcd.print(clock.dateFormat("H:i", dt));
delay (2500);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Datum");
lcd.setCursor(3,1);
lcd.print(clock.dateFormat("d m Y", dt));
delay (2500);
lcd.clear();
}
if(zeit == "18:50" || "19:00" || "19:05")
{
schreiben(h, t);
}
}