#include <dht.h>
#include <LiquidCrystal.h>
dht DHT;
#define DHT22_PIN 13
#define red 3
#define blue 2
#define white 4
#define yellow 5
#define humidity_set A0
#define temperature_set A1
#define volume_set A2
#define buzzer 6
#define power 0
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
int humidity_low = 25;
int humidity_high = 75;
int temp_low = 5;
int temp_high = 45;
int turn_on = 0;
void setup() {
lcd.begin(16, 2);
Serial.begin(115200);
// Serial.println();
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(white, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(power, INPUT);
}
void loop() {
int readData = DHT.read22(DHT22_PIN);
float humidity_s = analogRead(humidity_set);
float temperature_s = analogRead(temperature_set);
float volume_s = analogRead(volume_set);
humidity_s = map(humidity_s, 0, 1023, 30, 70);
temperature_s = map(temperature_s, 0, 1023, 10, 40);
volume_s = map(volume_s, 0, 1023, 0, 255);
float t = DHT.temperature;
float h = DHT.humidity;
display_values(t,temperature_s,h,humidity_s);
hvac_action(t,h,temperature_s,humidity_s);
hvac_alarm(t,h,temp_low,temp_high,humidity_low,humidity_high,volume_s);
}
void hvac_alarm(float t, float h, float temp_low, float temp_high, float humidity_low, float humidity_high, int volume_s){
if ((t < temp_low) || (t>temp_high) || (h>humidity_high) || (h<humidity_low)){
tone(buzzer, volume_s);
// Serial.println(volume_s);
}
else{
noTone(buzzer);
}
}
void display_values(float t, float temperature_s, float h, float humidity_s){
lcd.setCursor(0, 0);
lcd.print(String(t)+String("C "));
lcd.setCursor(0, 1);
lcd.print(String(temperature_s)+String("C "));
lcd.setCursor(8, 0);
lcd.print(String(h)+String("% "));
lcd.setCursor(8, 1);
lcd.print(String(humidity_s)+String("% "));
}
void hvac_action(float t, float h, float temperature_s, float humidity_s){
if(t>temperature_s){
digitalWrite(blue, HIGH);
}
else{
digitalWrite(blue, LOW);
}
if(t<temperature_s){
digitalWrite(red, HIGH);
}
else{
digitalWrite(red, LOW);
}
if(h>humidity_s){
digitalWrite(white, HIGH);
}
else{
digitalWrite(white, LOW);
}
if(h<humidity_s){
digitalWrite(yellow, HIGH);
}
else{
digitalWrite(yellow, LOW);
}
}