#include <LiquidCrystal.h> #include <dht_nonblocking.h> #include <Arduino.h> #include <Wire.h> #include <DS3231.h> #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_BMP085_U.h> #define CLK 2 #define DIO 3 DS3231 clock; RTCDateTime dt; LiquidCrystal lcd(8, 9, 10, 11, 12, 13); #define DHT_SENSOR_TYPE DHT_TYPE_11 static const int DHT_SENSOR_PIN = 2; DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE ); Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085); bool colonVisible = false; int pause = 500; String speicher = ""; int zaehler = 0; String zeile = ""; int stunde = 20; int minute = 10; int sekunde = 10; float groundLevelPressure; void setup() { lcd.begin(16, 2); lcd.setCursor(0, 0); clock.begin(); //clock.setDateTime(__DATE__, __TIME__); if (!bmp.begin()) { /* There was a problem detecting the BMP085 ... check your connections */ lcd.print("Kein BMP085"); while (1); } sensors_event_t event; bmp.getEvent(&event); groundLevelPressure = event.pressure; } void druckeZahl(int zahl) { if (zahl < 10) { lcd.print(0); } lcd.print(zahl); } void meinPrint(String zeile) { if (zaehler == 0) { lcd.setCursor(0, 0); lcd.print(zeile); } else { if (zaehler == 1) { lcd.setCursor(0, 1); lcd.print(zeile); speicher = zeile; } else { lcd.setCursor(0, 0); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(zeile); lcd.setCursor(0, 0); lcd.print(speicher); speicher = zeile; } } zaehler++; } float humidity; float temperature; int modus = 2; //1 temperatur, 2 datum, 3 luftfeuchtigkeit void loop() { if (modus == 1) { lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); bmp.getTemperature(&temperature); lcd.print("Temp: "); lcd.print(temperature, 1); lcd.print(" C"); } if (modus == 2) { dt = clock.getDateTime(); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); if (dt.dayOfWeek == 1) { lcd.print("Montag"); } if (dt.dayOfWeek == 2) { lcd.print("Dienstag"); } if (dt.dayOfWeek == 3) { lcd.print("Mittwoch"); } if (dt.dayOfWeek == 4) { lcd.print("Donnerstag"); } if (dt.dayOfWeek == 5) { lcd.print("Freitag"); } if (dt.dayOfWeek == 6) { lcd.print("Samstag"); } if (dt.dayOfWeek == 7) { lcd.print("Sonntag"); dt.dayOfWeek = 0; } } if (modus == 3) { dt = clock.getDateTime(); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print(dt.day); lcd.print("."); lcd.print(dt.month); lcd.print("."); lcd.print(dt.year); } if (modus == 4) { lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); lcd.print("Feuchte: "); lcd.print(humidity, 1); lcd.print("%"); } if (modus == 5) { lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); sensors_event_t event; bmp.getEvent(&event); if (event.pressure) { // Display atmospheric pressue in hPa lcd.print("Druck: "); lcd.print(round(event.pressure)); lcd.print(" hPa"); } } if (modus == 6) { lcd.setCursor(0, 1); lcd.print(" "); sensors_event_t event; bmp.getEvent(&event); int pressure = event.pressure; lcd.setCursor(0, 1); if (pressure < 1000) { lcd.print("Mistwetter"); } if (pressure > 1000 && pressure < 1025) { lcd.print("Veraenderlich"); } if (pressure > 1025) { lcd.print("Sonne"); } } if (modus == 7) { lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); sensors_event_t event; bmp.getEvent(&event); int pressure = event.pressure; if (pressure) { float seaLevelPressure = 1026; // SENSORS_PRESSURE_SEALEVELHPA; lcd.print("Hoehe: "); lcd.print(round(bmp.pressureToAltitude(seaLevelPressure, event.pressure))); lcd.print(" m"); } } if (modus == 8) { lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); sensors_event_t event; bmp.getEvent(&event); int pressure = event.pressure; if (pressure) { lcd.print("Flughoehe: "); lcd.print(round(bmp.pressureToAltitude(groundLevelPressure, event.pressure))); lcd.print("m"); } } if (modus == 10) { dt = clock.getDateTime(); lcd.setCursor(0, 1); lcd.print(" "); lcd.setCursor(0, 1); if (dt.month == 1) { lcd.setCursor(0, 1); lcd.print("Januar"); } lcd.setCursor(0, 1); if (dt.month == 2) { lcd.setCursor(0, 1); lcd.print("Febrauar"); } lcd.setCursor(0, 1); if (dt.month == 3) { lcd.setCursor(0, 1); lcd.print("März"); } lcd.setCursor(0, 1); if (dt.month == 4) { lcd.setCursor(0, 1); lcd.print("April"); } lcd.setCursor(0, 1); if (dt.month == 5) { lcd.setCursor(0, 1); lcd.print("Mai"); } lcd.setCursor(0, 1); if (dt.month == 6) { lcd.setCursor(0, 1); lcd.print("Juni"); } lcd.setCursor(0, 1); if (dt.month == 7) { lcd.setCursor(0, 1); lcd.print("Juli"); } lcd.setCursor(0, 1); if (dt.month == 8) { lcd.setCursor(0, 1); lcd.print("August"); } lcd.setCursor(0, 1); if (dt.month == 9) { lcd.setCursor(0, 1); lcd.print("September"); } lcd.setCursor(0, 1); if (dt.month == 10) { lcd.setCursor(0, 1); lcd.print("Oktober"); } lcd.setCursor(0, 1); if (dt.month == 11) { lcd.setCursor(0, 1); lcd.print("November"); } lcd.setCursor(0, 1); if (dt.month == 12) { lcd.setCursor(0, 1); lcd.print("Dezember"); } } modus++; if (modus == 11) { modus = 1; } for (int i = 0; i < 25; i++) { dt = clock.getDateTime(); lcd.setCursor(0, 0); druckeZahl(dt.hour); lcd.print(":"); druckeZahl(dt.minute - 1); lcd.print(":"); druckeZahl(dt.second); // während der 200ms Wartezeit messen wir for (int j = 0; j < 20; j++) { dht_sensor.measure(&temperature, &humidity); delay(10); } } }