/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include "DHTesp.h"
const int DHT_PIN = 15;
const int heaterPin = 22;
const int uvcPin = 21;
const int systemSwPin = 14;
const int heaterSwPin = 13;
const int uvcSwPin = 12;
DHTesp dhtSensor;
TempAndHumidity dhtData;
int sswVal = 1;
int hswVal = 1;
int uswVal = 1;
unsigned long preTime = 0;
unsigned long curTime = 0;
unsigned int timeInterval = 1000;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(heaterPin, OUTPUT);
pinMode(uvcPin, OUTPUT);
pinMode(systemSwPin, INPUT_PULLUP);
pinMode(heaterSwPin, INPUT_PULLUP);
pinMode(uvcSwPin, INPUT_PULLUP);
preTime = millis();
curTime = millis();
digitalWrite(heaterPin, hswVal);
digitalWrite(uvcPin, uswVal);
}
void loop() {
if ((curTime - preTime) < timeInterval) {
curTime = millis();
}
else {
preTime = curTime;
dhtData = dhtSensor.getTempAndHumidity();
}
sswVal = digitalRead(systemSwPin);
hswVal = digitalRead(heaterSwPin);
uswVal = digitalRead(uvcSwPin);
if (sswVal==LOW) {
digitalWrite(heaterPin, LOW);
digitalWrite(uvcPin, LOW);
}
else {
if (hswVal == LOW) {
digitalWrite(heaterPin, LOW);
}
else {
if (dhtData.temperature < 40) {
digitalWrite(heaterPin, HIGH);
}
else {
digitalWrite(heaterPin, LOW);
}
}
if (uswVal == LOW) {
digitalWrite(uvcPin, LOW);
}
else {
if (dhtData.temperature < 40) {
digitalWrite(uvcPin, HIGH);
}
else {
digitalWrite(uvcPin, LOW);
}
}
}
//Serial.println("System SW: " + String(sswVal) + " Heater SW: " + String(hswVal) + " UVC SW: " + String(uswVal));
//Serial.println("Temp: " + String(dhtData.temperature, 2) + "°C");
//Serial.println("Humidity: " + String(dhtData.humidity, 1) + "%");
//Serial.println("---");
}