#include "DHT.h"
#define DHTPIN 26
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// DHT22:
// 10k zwischen 5V und DATA
// Zeit zwischen den Abfragen: Alle 2 Sek.
#define LDRPIN 27
#define PIRPIN 25
//unsigned long motionSpan = 0; //... Zeitspanne zwischen letzter Bewegung
//unsigned int motionDuration = 10; //... Sekunden nachdem keine Bewegung mehr festegestellt wurde
//bool motionStatus = false;
//#define MOTIONLED 14
// Globale Variablen:
float dhtHumi = 0.0;
float dhtTemp = 0.0;
float dhtTempHI = 0.0;
bool ldrStat = LOW;
// Bewegungs-Interrupt / PIR-Sensor
void IRAM_ATTR pirTrigger() {
Serial.println("Bewegung erkannt @" + String(millis()) + "ms");
}
void setup() {
Serial.begin(115200);
// PIR-Sensor auf Interrupt setzen
pinMode(PIRPIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(PIRPIN), pirTrigger, HIGH);
// LED Output für Bewegungssimulation
//pinMode(MOTIONLED, OUTPUT);
//analogWrite(MOTIONLED, 0);
pinMode(LDRPIN, INPUT_PULLUP);
// DHT-Sensor starten
dht.begin();
}
void loop() {
dhtHumi = dht.readHumidity();
dhtTemp = dht.readTemperature();
dhtTempHI = dht.computeHeatIndex(dhtTemp, dhtHumi, false); // Calc heat index in C (isFahreheit = false)
Serial.print(F("Humidity: "));
Serial.print(dhtHumi);
Serial.print(F("% Temperature: "));
Serial.print(dhtTemp);
Serial.print(F("°C "));
Serial.print(F(" Heat index: "));
Serial.print(dhtTempHI);
Serial.println(F("°C "));
// ----------------
ldrStat = digitalRead(LDRPIN);
Serial.print("Es ist ");
if (ldrStat == LOW) {
Serial.println("hell!");
} else {
Serial.println("dunkel...");
}
// ----------------
delay(2000);
}