1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | #include “Arduino.h” #include “MHZ19.h” #include “SoftwareSerial.h” #include “RTClib.h” #include “DHT.h” #include “LiquidCrystal_I2C.h” // Name des LCDs (lcd) festlegen LiquidCrystal_I2C lcd(0x27, 20, 4); // Pin des DHT-Sensors int SENSOR_DHT = 8; // Sensortyp festlegen // DHT22 oder DHT11 #define SensorTyp DHT11 // Sensor DHT einen Namen zuweisen DHT dht(SENSOR_DHT, SensorTyp); // Name des RTC-Moduls (rtc) RTC_DS3231 rtc; // RX/TX Pins zuordnen #define RX 2 #define TX 3 // Name des Moduls MH-Z19 MHZ19 MHZCO2; // SoftwareSerial -> Name zuordnen SoftwareSerial MHZSerial(RX, TX); unsigned long VerstricheneZeit = 0; void setup() { Serial.begin(9600); delay(500); // LCD starten lcd.init(); // Hintergrundbeleuchtung einschalten lcd.backlight(); // Serielle Kommunikation MH-Z19C starten MHZSerial.begin(9600); MHZCO2.begin(MHZSerial); // automatische Kalibrierung ausschalten (false), einschalten mit true MHZCO2.autoCalibration(false); // RTC-Modul starten rtc.begin(); // Datum/Zeit einmalig setzen, beim nächsten Starten auskommentieren // rtc.adjust(DateTime(2023, 4, 23, 8, 50, 30)); // Sensor DHT starten dht.begin(); } void loop() { // 5 Sekunden warten if (millis() - VerstricheneZeit >= 5000) { // rtc.now() -> aktuelle Zeit holen DateTime aktuell = rtc.now(); /* Datumsformat festlegen DD -> Tag mit führender 0 MM -> Monat mit führender 0 YYYY -> vollständige Angabe des Jahres */ char Datum[] = “DD.MM.YYYY “; // Datum in Zeichenkette (String) umwandeln und anzeigen Serial.print(aktuell.toString(Datum)); // Format der Zeitangabe festlegen char Zeit[] = “hh:mm:ss Uhr”; // Zeitangabe in Zeichenkette (String) umwandeln und anzeigen Serial.println(aktuell.toString(Zeit)); // Daten lesen // CO2-Wert MH-Z19C int CO2 = MHZCO2.getCO2(); // Temperatur MH-Z19 int TemperaturMHZ = MHZCO2.getTemperature(); // Temperatur RTC ermitteln String TemperaturRTC = String(rtc.getTemperature()); String AnzeigeTemperaturRTC = String(TemperaturRTC); AnzeigeTemperaturRTC.replace(“.”, “,”); // Temperatur DHT float TemperaturDHT = dht.readTemperature(); String AnzeigeTemperaturDHT = String(TemperaturDHT); AnzeigeTemperaturDHT.replace(“.”, “,”); // Luftfeuchtigkeit DHT String AnzeigeLuftfeuchtigkeit = String(dht.readHumidity()); AnzeigeLuftfeuchtigkeit.replace(“.”, “,”); Serial.print(“Messwert CO²: ”); Serial.println(String(CO2) + ” ppm”); Serial.print(“Temperatur MH-Z19: ”); Serial.println(String(TemperaturMHZ) + “°C”); Serial.print(“Temperatur RTC: ”); Serial.println(AnzeigeTemperaturRTC + “°C”); Serial.print(“Temperatur DHT: ”); Serial.println(AnzeigeTemperaturDHT + “°C”); Serial.println(“———————-”); lcd.setCursor(0, 0); lcd.print(aktuell.toString(Zeit)); lcd.setCursor(0, 1); lcd.print(“CO2 ” + String(CO2) + ” ppm”); lcd.setCursor(0, 2); lcd.print(“Temperatur ” + AnzeigeTemperaturDHT + “\337C”); lcd.setCursor(0, 3); lcd.print(“Feuchtigkeit ” + AnzeigeLuftfeuchtigkeit + “%”); VerstricheneZeit = millis(); } } |
Letzte Aktualisierung: