Advertisement
RaspBar

KlimaBox.ino

Jan 16th, 2025
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #include "DHT.h"
  2. #include <LiquidCrystal_I2C.h>// Bibliothek importieren
  3.  
  4. #define DHTPIN  12                    // DHT11 an Pin 12
  5. #define DHTTYPE DHT11                 // DHT11 auswählen, bei WokWi ist es ein DHT22
  6. DHT dht(DHTPIN, DHTTYPE);             // PIN 12 und Type DHT22
  7.  
  8. int lcdAddress = 0x27;
  9. LiquidCrystal_I2C lcd(lcdAddress, 16, 2);
  10.  
  11. //Drehpotentiometer am analogen PIN A0
  12. #define KNOB A0
  13.  
  14. //definieren der LEDs
  15. #define LED1 4 //LED1 rot
  16. #define LED2 5 //LED2 grün
  17. #define LED3 6 //LED3 blau
  18. #define LED4 7 //LED4 gelb
  19.  
  20. //minTemp festlegen
  21. const float minTemp = 20.0;
  22. float curTemp;
  23.  
  24.  
  25. void setup() {
  26.   //DHT22 initialisieren
  27.   dht.begin();
  28.   //Seriellen Monitor starten
  29.   Serial.begin(9600);
  30.   // Display initialisieren
  31.   lcd.init();                              
  32.   lcd.clear();
  33.   lcd.setBacklight(1);                     // 0 = aus | 1 = ein
  34.  
  35.   //setzen der LEDs als Ausgang
  36.   pinMode(LED1, OUTPUT);
  37.   pinMode(LED2, OUTPUT);
  38.   pinMode(LED3, OUTPUT);
  39.   pinMode(LED4, OUTPUT);
  40. }
  41.  
  42. void loop() {
  43.  
  44.   //lesen des aktuellen Wertes am analogen Pin A0
  45.   int value = analogRead(KNOB);
  46.  
  47.   //lesen der aktuellen Temperatur (DHT22)
  48.   curTemp = dht.readTemperature();
  49.  
  50.   //mappen des Wertes vom Drehpotentiometers
  51.   //auf einen Wert zwischen 22°C und 26°C.
  52.   float maxTemp = map(value,0,1024,22,27);
  53.  
  54.   // Anzeige der Werte auf Display und im seriellen Monitor
  55.   lcd.setCursor(0,0);                      // Cursor auf Zeile 1, Zeichen 1 setzen
  56.   lcd.print("max. = ");
  57.   lcd.print(maxTemp);
  58.   lcd.print(" \337C");  
  59.   lcd.setCursor(0,1);                      // Cursor auf Zeile 1, Zeichen 1 setzen
  60.   lcd.print("akt. = ");
  61.   lcd.print(curTemp); // Ausgabe: Temperatur
  62.   lcd.print(" \337C");  
  63.  
  64.   Serial.print(minTemp);
  65.   Serial.print("  -  ");
  66.   Serial.print(maxTemp);
  67.   Serial.print("  -  ");
  68.   Serial.println(curTemp);
  69.  
  70.   //Auswertung und Anzeige mit LED
  71.   if (curTemp > maxTemp) {
  72.     digitalWrite(LED1, HIGH);
  73.     digitalWrite(LED2, LOW);
  74.     digitalWrite(LED3, LOW);
  75.   }
  76.   else if (curTemp < maxTemp && curTemp > 20) {
  77.     digitalWrite(LED1, LOW);
  78.     digitalWrite(LED2, HIGH);
  79.     digitalWrite(LED3, LOW);
  80.   }
  81.   else {
  82.     digitalWrite(LED1, LOW);
  83.     digitalWrite(LED2, LOW);
  84.     digitalWrite(LED3, HIGH);
  85.   }
  86.   delay(2000);
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement