diff --git a/Home.md b/Home.md index 337584f..31d99ef 100644 --- a/Home.md +++ b/Home.md @@ -17,4 +17,119 @@ Auf dem Display wird die Aktuelle Temperatur, die Luftfeuchtigkeit und Regen ang * Buzzer * Widerstände * Verbindungskabel +## Code +```cpp +#include // Arduino Core-Bibliothek +#include // Bibliothek für den DHT-Sensor +#include // Bibliothek für das LCD-Display mit I2C-Schnittstelle +const int DHT_PIN = 4; // Pin für den DHT-Sensor +const int PIEZO_PIN = 17; // Pin für den Piezosummer + +const int LEDGREEN_PIN = 12; // Pin für grüne LED +const int LEDYELLOW_PIN = 32; // Pin für gelbe LED +const int LEDRED_PIN = 26; // Pin für rote LED + +const int LEDWH_PIN = 13; // Pin für weitere LED (nicht genutzt) + +int prevRating = -1; // Variable zur Speicherung der vorherigen Bewertung + +DHT dht(DHT_PIN, DHT11); // DHT-Objekt mit dem Pin für den Sensor und dem Sensortyp + +LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD-Objekt mit I2C-Adresse und Zeilen- und Spaltenzahl + +// Funktion zur Wiedergabe des Warnsignals +void playWarnTone() +{ + tone(PIEZO_PIN, 2000); // Piezosummer mit Frequenz 2000Hz aktivieren + delay(50); // 50 Millisekunden warten + noTone(PIEZO_PIN); // Piezosummer ausschalten + delay(50); // 50 Millisekunden warten + tone(PIEZO_PIN, 2000); // Piezosummer mit Frequenz 2000Hz aktivieren + delay(50); // 50 Millisekunden warten + noTone(PIEZO_PIN); // Piezosummer ausschalten +} + +// Funktion zum Ausschalten aller LEDs +void OFFLEDS() +{ + digitalWrite(LEDGREEN_PIN, HIGH); // Grüne LED ausschalten + digitalWrite(LEDYELLOW_PIN, HIGH); // Gelbe LED ausschalten + digitalWrite(LEDRED_PIN, HIGH); // Rote LED ausschalten +} + +// Setup-Funktion, die beim Start des Programms einmal ausgeführt wird +void setup() +{ + Serial.begin(9600); // Serielle Kommunikation mit Baudrate 9600 starten + dht.begin(); // Initialisierung des DHT-Sensors + + lcd.init(); // Initialisierung des LCD-Displays + lcd.backlight(); // Hintergrundbeleuchtung des Displays einschalten + + lcd.print("Hello"); // Text "Hello" auf dem Display anzeigen + + pinMode(PIEZO_PIN, OUTPUT); // Piezosummer-Pin als Ausgang konfigurieren + + pinMode(LEDGREEN_PIN, OUTPUT); // Grüne LED-Pin als Ausgang konfigurieren + pinMode(LEDYELLOW_PIN, OUTPUT); // Gelbe LED-Pin als Ausgang konfigurieren + pinMode(LEDRED_PIN, OUTPUT); // Rote LED-Pin als Ausgang konfigurieren + + OFFLEDS(); // Alle LEDs ausschalten + + tone(PIEZO_PIN, 1500); // Piezosummer mit Frequenz 1500Hz aktivieren + delay(250); // 250 Millisekunden warten + noTone(PIEZO_PIN); // Piezosummer ausschalten + delay(250); // 250 Millisekunden warten + tone(PIEZO_PIN, 2000); // Piezosummer mit Frequenz 2000Hz aktivieren + delay(250); // 250 Millisekunden warten + noTone(PIEZO_PIN); // Piezosummer ausschalten +} + +// Loop-Funktion, die kontinuierlich wiederholt wird +void loop() +{ + float temp = dht.readTemperature(); // Temperaturwert vom DHT-Sensor lesen + float humid = dht.readHumidity(); // Luftfeuchtigkeitswert vom DHT-Sensor lesen + delay(100); // 100 Millisekunden warten + + int rating = 0; // Bewertung initialisieren + + // Bewertung der Umgebungsbedingungen anhand von Schwellenwerten + if ((int)temp > 25) + rating += 1; // Bewertung erhöhen, wenn Temperatur über 25°C liegt + if ((int)humid > 50) + rating += 1; // Bewertung erhöhen, wenn Luftfeuchtigkeit über 50% liegt + + // Überprüfen, ob sich die Bewertung geändert hat + if (rating != prevRating) + { + playWarnTone(); // Warnsignal abspielen + switch (rating) + { + case 0: + OFFLEDS(); // Alle LEDs ausschalten + digitalWrite(LEDGREEN_PIN, LOW); // Grüne LED einschalten + break; + + case 1: + OFFLEDS(); // Alle LEDs ausschalten + digitalWrite(LEDYELLOW_PIN, LOW); // Gelbe LED einschalten + break; + + case 2: + OFFLEDS(); // Alle LEDs ausschalten + digitalWrite(LEDRED_PIN, LOW); // Rote LED einschalten + break; + + default: + OFFLEDS(); // Alle LEDs ausschalten + digitalWrite(LEDGREEN_PIN, LOW); // Grüne LED einschalten + break; + } + } + + // Aktuelle Bewertung speichern + prevRating = rating; +} +```