#include #include #include "DHT.h" #include #include #include int InputInfra = 10; IRrecv irrecv(InputInfra); decode_results results; #define DHTPIN 2 #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); //Inizializzazione Pin int sensoreTerra1 = A0; int sensoreTerra2 = A1; int sensoreTerra3 = A2; int sensoreTerra4 = A3; int Rele1=6; int Rele2=5; int Button=4; //Inizialiazzazione Variabili int sensorValue1 = 0; int sensorValue2 = 0; int sensorValue3 = 0; int sensorValue4 = 0; double MediaSensori1=0.0; double MediaSensori2=0.0; double temp1=0.0; double temp2=0.0; int buttonState=0; boolean StatoPompa1=false; boolean StatoPompa2=false; LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); dht.begin(); pinMode(sensoreTerra1, INPUT); pinMode(sensoreTerra2, INPUT); pinMode(sensoreTerra3, INPUT); pinMode(sensoreTerra4, INPUT); pinMode(Rele1, OUTPUT); //Inzializza Relč 1 pinMode(Rele2, OUTPUT); //Inzializza Relč 2 pinMode(Button,INPUT); lcd.backlight(); irrecv.enableIRIn(); Serial.begin(9600); } void loop() { //Il programma legge tutti i sensori sensorValue1 = analogRead(sensoreTerra1); sensorValue2 = analogRead(sensoreTerra2); sensorValue3 = analogRead(sensoreTerra3); sensorValue4 = analogRead(sensoreTerra4); temp1=0,0; temp2=0,0; temp1=temp1+sensorValue1+sensorValue2; temp2=temp2+sensorValue3+sensorValue4; //Ora fa la media tra i sensori per poi attivare le pompe separatamente MediaSensori1=(temp1/2); MediaSensori2=(temp2/2); // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) int h = dht.readHumidity(); int t = dht.readTemperature(); digitalWrite(Rele1, LOW); digitalWrite(Rele2, LOW); buttonState=digitalRead(Button); // set the cursor to (0,0): lcd.setCursor(0, 0); // print from 0 to 9: lcd.print("T: "); lcd.print(t); lcd.print("C"); lcd.print(" "); lcd.print("H: "); lcd.print(h); lcd.print("%"); // set the cursor to (16,1): lcd.setCursor(0,1); Serial.print(MediaSensori1); Serial.print(" "); Serial.println(MediaSensori2); //Controllo Motore tramite telecomando, 90=Su 890=Giů if (irrecv.decode(&results)) { if(results.value==90) { Serial.println("SU"); } else { if(results.value==890) { Serial.println("GIU'"); } } } if(buttonState==HIGH) { digitalWrite(Rele1, HIGH); digitalWrite(Rele2, HIGH); } else { //Controllo dei sensori per attivare le pompe if(MediaSensori1<60) { if( MediaSensori2<60) { //Attiva tutte e due le pompe lcd.print("ANNAFFIA"); digitalWrite(Rele1, HIGH); digitalWrite(Rele2, HIGH); } else { //Attiva solo la prima pompa lcd.print("ANNAFFIA"); digitalWrite(Rele1, HIGH); } } else { if(MediaSensori2<60) { //Attiva solo la seconda pompa lcd.print("ANNAFFIA"); digitalWrite(Rele2, HIGH); } else { //Tiene spente le pompe lcd.print("OK "); digitalWrite(Rele1, LOW); digitalWrite(Rele2, LOW); } } } irrecv.resume(); delay(300); }