/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTTYPE DHT22
#define DHTPIN 15
const int LED_red = 34; //red
const int LED_green = 35; //green
const int LED_blue = 32; //blue
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // LDC mit 16 Zeichen in 2 Zeilen und der HEX-Adresse 0x27.
float floatMap(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
int maxTemp = 65; //Angabe des Max-Temperaturs
int minTemp = 55; //Angabe des Min-Temperaturs
float t = 0;
void setup()
{
lcd.init(); // LCD initialisieren
// Anzeigetext und Textposition festlegen.
lcd.backlight();
lcd.setCursor(0,0);
Serial.begin(9600);
dht.begin(11300);
pinMode(LED_red, OUTPUT); //OUTPUT: LEDs sind erstmals aus
pinMode(LED_blue, OUTPUT);
pinMode(LED_green, OUTPUT);
}
void loop()
{
lcd.clear();
//Verzögerung von einer Sekunden
t = dht.readTemperature();
lcd.setCursor(0,1);
lcd.print(t);
lcd.print(" Grad"); //Anzeige an Tabelle
if (t<minTemp) { //If-Verfahren
activateLED(LED_blue);
}
else if (t>maxTemp) {
activateLED(LED_red);
}
else {
activateLED(LED_green);
}
delay(1000);
}
void activateLED(int led){
digitalWrite(LED_blue, LOW);
digitalWrite(LED_red, LOW);
digitalWrite(LED_green, LOW);
digitalWrite(led, HIGH); //LEDs, die die Klausel erfüllen, gehen an, währen die Anderen aus gehen
}