#include "DHT.h"
// Define the DHT22 sensors
#define DHTPIN1 7
#define DHTPIN2 8
#define DHTPIN3 9
#define DHTTYPE DHT22
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
DHT dht3(DHTPIN3, DHTTYPE);
float aktuelleTemperaturen[3]; // Aktuelle Temperaturen in °C
float gewuenschteTemperaturen[3] = {22.0, 22.0, 21.0}; // Gewünschte Temperaturen in °C
bool heizungen[3] = {false, false, false}; // Heizstatus (false = aus, true = ein)
int heizung1 = 2;
int heizung2 = 2;
int heizung3 = 3;
void steuereHeizungen(void);
void heizungsoptionen(int auswahl);
// Funktion zur Initialisierung
void setup() {
Serial.begin(9600);
pinMode(heizung1, OUTPUT);
pinMode(heizung2, OUTPUT);
pinMode(heizung3, OUTPUT);
Serial.println("Wählen Sie eine Option:");
Serial.println("1: Aktuelle Temperaturen anzeigen");
Serial.println("2: Gewünschte Temperatur setzen");
Serial.println("3: Heizstatus ändern");
}
// Hauptloop
void loop() {
if(Serial.available()) {// Warten auf Benutzereingabe
int auswahl = Serial.parseInt(); // Benutzerauswahl einlesen
heizungsoptionen(auswahl); // Heizungssteuerung basierend auf der Auswahl
Serial.println("Wählen Sie eine Option:");
Serial.println("1: Aktuelle Temperaturen anzeigen");
Serial.println("2: Gewünschte Temperatur setzen");
Serial.println("3: Heizstatus ändern");
}
steuereHeizung();
}
// Funktion zur Heizungssteuerung
void heizungsoptionen(int auswahl) {
switch(auswahl) {
case 1: // Aktuelle Temperaturen anzeigen
for (int i = 0; i < 3; i++) {
Serial.print("Raum ");
Serial.print(i + 1);
Serial.print(": Aktuelle Temperatur = ");
Serial.print(aktuelleTemperaturen[i]);
Serial.print(" °C, Gewünschte Temperatur = ");
Serial.print(gewuenschteTemperaturen[i]);
Serial.print(" °C, Heizstatus = ");
Serial.println(heizungen[i] ? "Ein" : "Aus");
}
break;
case 2: // Gewünschte Temperatur setzen
Serial.println("Geben Sie die Raumnummer (1-3) ein:");
int raumNummer = Serial.parseInt() - 1; // Raumnummer einlesen
if (raumNummer >= 0 && raumNummer < 3) {
Serial.println("Geben Sie die gewünschte Temperatur ein:");
gewuenschteTemperaturen[raumNummer] = Serial.parseFloat(); // Gewünschte Temperatur setzen
Serial.print("Gewünschte Temperatur für Raum ");
Serial.print(raumNummer + 1);
Serial.print(" gesetzt auf: ");
Serial.println(gewuenschteTemperaturen[raumNummer]);
} else {
Serial.println("Ungültige Raumnummer.");
}
break;
case 3: // Heizstatus ändern
Serial.println("Geben Sie die Raumnummer (1-3) ein:");
raumNummer = Serial.parseInt() - 1; // Raumnummer einlesen
if (raumNummer >= 0 && raumNummer < 3) {
heizungen[raumNummer] = !heizungen[raumNummer]; // Heizstatus umschalten
Serial.print("Heizstatus für Raum ");
Serial.print(raumNummer + 1);
Serial.print(" geändert auf: ");
Serial.println(heizungen[raumNummer] ? "Ein" : "Aus");
} else {
Serial.println("Ungültige Raumnummer.");
}
break;
default: // Ungültige Auswahl
Serial.println("Ungültige Auswahl");
break;
}
}
void steuereHeizung(){
// Read temperatures from the DHT22 sensors
aktuelleTemperaturen[0] = dht1.readTemperature();
aktuelleTemperaturen[1] = dht2.readTemperature();
aktuelleTemperaturen[2] = dht3.readTemperature();
// Control the LEDs based on the temperature thresholds
digitalWrite(heizung1, aktuelleTemperaturen[0] > gewuenschteTemperaturen[0] ? LOW : HIGH);
digitalWrite(heizung2, aktuelleTemperaturen[1] > gewuenschteTemperaturen[1] ? LOW : HIGH);
digitalWrite(heizung3, aktuelleTemperaturen[2] > gewuenschteTemperaturen[2] ? LOW : HIGH);
delay(1000);
}