#include "DHT.h"
#include <LiquidCrystal_I2C.h>// Bibliothek importieren
#define DHTPIN 12 // DHT11 an Pin 12
#define DHTTYPE DHT11 // DHT11 auswählen, bei WokWi ist es ein DHT22
DHT dht(DHTPIN, DHTTYPE); // PIN 12 und Type DHT22
int lcdAddress = 0x27;
LiquidCrystal_I2C lcd(lcdAddress, 16, 2);
//Drehpotentiometer am analogen PIN A0
#define KNOB A0
//definieren der LEDs
#define LED1 4 //LED1 rot
#define LED2 5 //LED2 grün
#define LED3 6 //LED3 blau
#define LED4 7 //LED4 gelb
//minTemp festlegen
const float minTemp = 20.0;
float curTemp;
void setup() {
//DHT22 initialisieren
dht.begin();
//Seriellen Monitor starten
Serial.begin(9600);
// Display initialisieren
lcd.init();
lcd.clear();
lcd.setBacklight(1); // 0 = aus | 1 = ein
//setzen der LEDs als Ausgang
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
//lesen des aktuellen Wertes am analogen Pin A0
int value = analogRead(KNOB);
//lesen der aktuellen Temperatur (DHT22)
curTemp = dht.readTemperature();
//mappen des Wertes vom Drehpotentiometers
//auf einen Wert zwischen 22°C und 26°C.
float maxTemp = map(value,0,1024,22,27);
// Anzeige der Werte auf Display und im seriellen Monitor
lcd.setCursor(0,0); // Cursor auf Zeile 1, Zeichen 1 setzen
lcd.print("max. = ");
lcd.print(maxTemp);
lcd.print(" \337C");
lcd.setCursor(0,1); // Cursor auf Zeile 1, Zeichen 1 setzen
lcd.print("akt. = ");
lcd.print(curTemp); // Ausgabe: Temperatur
lcd.print(" \337C");
Serial.print(minTemp);
Serial.print(" - ");
Serial.print(maxTemp);
Serial.print(" - ");
Serial.println(curTemp);
//Auswertung und Anzeige mit LED
if (curTemp > maxTemp) {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
}
else if (curTemp < maxTemp && curTemp > 20) {
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
}
else {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
}
delay(2000);
}
Comments
0 B
|0 👍
/0 👎