#include <DHT.h> // standard DHT library
#define DHT1PIN 12 // signal pin for sensor #1
#define DHT2PIN 11 // signal pin for sensor #2
#define DHTTYPE DHT22 // defining the sensor type - DHT 22 (AM2302)
int ESTIVO = 8;
int INVERNALE = 7;
int ESTIVO_State = 0; // definisco lo stato basso (vcc 0v)
int INVERNALE_State = 0; // definisco lo stato basso (vcc 5v)
DHT dht1(DHT1PIN, DHTTYPE);
DHT dht2(DHT2PIN, DHTTYPE);
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,20,4);
byte degreeChar[8] = //
{ B01100,
B10010,
B10010,
B01100,
B00000,
B00000,
B00000,
B00000,
};
void setup()
{
lcd.init();
Serial.begin(9600); //avvio comunicazione seriale
pinMode(10, OUTPUT); // Ventola 1
pinMode(9, OUTPUT); // Ventola 2
pinMode(8, INPUT); //Input per il programma estivo
pinMode(7, INPUT); //Input per il programma invernale
digitalWrite(10, LOW); // definisco lo stato della ventola a riposo
digitalWrite(9, LOW); // definisco lo stato della ventola a riposo
lcd.begin(16, 2); // start LCD
dht1.begin(); // start sensor1
dht2.begin(); // start sensor2
}
void loop()
{
float h1 = dht1.readHumidity(); // variable for humidity of sensor #1
float t1 = dht1.readTemperature(); // variable for temperature of sensor #1
float h2 = dht2.readHumidity(); // variable for humidity of sensor #2
float t2 = dht2.readTemperature(); // variable for temperature of sensor #2
delay(2000); // wait 2 seconds for sensors to be ready
if (isnan(t1) || isnan(h1)) { // checking sensor #1
lcd.setCursor(0, 0);
lcd.print("DHT22 SENSOR 1 ERROR");// print error message
//if sensor is not working
}
else { // if sensor OK - print measurements
lcd.setCursor(0, 0);
lcd.print("t1=");
lcd.print(t1);
lcd.createChar(0, degreeChar);
lcd.setCursor(8, 0);
lcd.write(byte(0));
lcd.print("C ");
lcd.print("h1=");
lcd.print(h1);
lcd.print("%");
}
if (isnan(t2) || isnan(h2)) { // checking sensor #2
lcd.setCursor(0, 2);
lcd.print("DHT22 SENSOR 2 ERROR");// print error message
//if sensor is not working
}
else { // if sensor OK - print measurements
lcd.setCursor(0, 2);
lcd.print("t2=");
lcd.print(t2);
lcd.createChar(0, degreeChar);
lcd.setCursor(8, 2);
lcd.write(byte(0));
lcd.print("C ");
lcd.print("h2=");
lcd.print(h2);
lcd.print("%");
}
if (t1==t2){
digitalWrite(10, LOW);
digitalWrite(9, LOW);
}
if (digitalRead(ESTIVO)){
digitalWrite(9, LOW);
if (t1<t2){
digitalWrite(10, HIGH);
}
else (digitalWrite(10, LOW));
}
if (digitalRead(INVERNALE)){
digitalWrite(10, LOW);
if (t1>t2){
digitalWrite(9, HIGH);
}
else (digitalWrite(9, LOW));
}
}