#include "DHT.h"
#define RED 4
#define GREEN 5
#define BLUE 6
#define KNOB A0
int DHTPIN = 12;
int minTemp = 20;
boolean isDelay = false;
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
int value = analogRead(KNOB);
int maxTemp = map(value,0,1024,20,40);
Serial.print(" %\t");
Serial.print("maxTemp: ");
Serial.println(maxTemp);
blink(minTemp, maxTemp, t, BLUE, GREEN, RED);
if (!isDelay) {
delay(500);
}
}
void blink(int min, int max, int temp, int led1, int led2, int led3) {
int timeout = 500;
if (temp <= min){
timeout = timeout - (min - temp)*20 + 10;
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
if ((min - temp) > 3) {
isDelay = true;
delay(timeout);
digitalWrite(led1,LOW);
delay(timeout);
}
else {
isDelay = false;
}
}
else if(temp > min && temp <= max){
isDelay = false;
digitalWrite(led1,LOW);
digitalWrite(led2,HIGH);
digitalWrite(led3,LOW);
}
else {
timeout = timeout - (temp - max)*20 + 10;
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,HIGH);
if ((temp - max) > 3) {
isDelay = true;
delay(timeout);
digitalWrite(led3,LOW);
delay(timeout);
}
else {
isDelay = false;
}
}
}