// Dennis B., Lea F., Mika O.
// Einbindung der Library für den DHT-Sensor
#include "DHT.h"
// Digital PIN für den DHT-Sensor
int dhtPin = 2;
// Deklariert den DHT und welcher (unserer Fall DHT22)
DHT dht(dhtPin, DHT22);
// Auf welchen Digital Pin liegt das Relay
int relayPin = 3;
// Digital PIN für die Ampel
int redLight = 13;
int yellowLight = 12;
int greenLight = 11;
// Maximaler CO2 Wert, welcher unser Simulierter CO2-Sensor kann
int maxCO2Value = 5000;
void setup() {
Serial.begin(9600); //Seriellen Kommunikation erstellen
dht.begin(); //DHT-Sensor starten
// Legt die Ampel-Pins als OUTPUT fest
pinMode(redLight, OUTPUT);
pinMode(yellowLight, OUTPUT);
pinMode(greenLight, OUTPUT);
// Legt den Analog-Input für den Simulierten CO2-Sensor fest als Input
pinMode(A5, INPUT);
// Legt den RelayPin als OUTPUT fest
pinMode(relayPin, OUTPUT);
}
void loop() {
float temperatur = dht.readTemperature(); //Temperatur auslesen
float humidity = dht.readHumidity(); //Luftfeuchtigkeit auslesen
int co2Input = analogRead(A5); // Liest den Analogen Wert vom CO2-Sensor aus
float co2Voltage = co2Input * (5.0 / 1023.0); // Konvertiert den Analogen-Wert in eine Spannung
int co2Value = co2Voltage * 1000; // Konventiert die Spannung in PPM
// Schreibt in den Monitor die Werte
Serial.println("Temperatur: " + String(temperatur) + " °C | Luftfeuchtigkeit: " + String(humidity) + " % | CO2: " + String(co2Value) + " PPM");
// Ändert die Anzeige der Ampel anhand des CO2 Wert. (Grün & Gelb)
if (co2Value <= 1000) {
digitalWrite(redLight, LOW);
digitalWrite(yellowLight, LOW);
digitalWrite(greenLight, HIGH);
} else if (co2Value > 1000 && co2Value < 1400) {
digitalWrite(redLight, LOW);
digitalWrite(yellowLight, HIGH);
digitalWrite(greenLight, LOW);
}
// Ändert die Anzeige der Ampel anhand des CO2 Wert. (Grün & Gelb) || Steuert das Relay an.
if (co2Value > 1400) {
digitalWrite(redLight, HIGH);
digitalWrite(yellowLight, LOW);
digitalWrite(greenLight, LOW);
digitalWrite(relayPin, HIGH);
} else {
digitalWrite(relayPin, LOW);
}
// Baue eine kurze Pause ein
delay(500);
}