#include //RTC DS3231 by andrew wickert #include /***************************************************************** Déclaration des Capteurs *****************************************************************/ //relay Lumiere const int Haut = 2; const int Bas = 3; //relay Ventilation const int Ventil = 4; //relay Arrosage const int Arro = 5; /* //Interrupteur const int interLumBas = 6; //inter Lumiere bas ON/OFF const int interLumOff = 7; //inter Lumiere OFF const int interVentAuto = 8; //inter Ventilation ON/Auto const int interVentOff = 9; //inter Ventilation OFF const int interArroAuto = 10;//inter Arro ON/Auto const int interArroOff = 11;//inter Arro OFF const int inter7 = 12;*/ //RTC DS3231 Clock; /***************************************************************** Déclaration des Variables globals *****************************************************************/ //Variable lumiere int newDay = 1; // Variable pour savoir si nouveau jour. int HA; //heure allumage en minute int HE; //heure extinction en minute (Ha +18H +/-15min) //Variable Extraction int tmpExtract, humExtract; int extract; //Variabe Arrosage const int delaySecArrosage = 20; int HeuArrosage; int jourArrosage = 1; /*********************************************************************** Setup **********************************************************************/ void setup() { Serial.begin(9600); /*********************************************************************** init des pins * *********************************************************************/ //PIN Lumiere pinMode(Haut, OUTPUT); digitalWrite(Haut, HIGH); pinMode(Bas, OUTPUT); digitalWrite(Bas, HIGH); //Pin ventilation pinMode(Ventil, OUTPUT); digitalWrite(Ventil, HIGH); //Pin Arrosage pinMode(Arro, OUTPUT); digitalWrite(Arro, HIGH); /* //interupteur pinMode(interLumBas, INPUT); pinMode(interLumOff, INPUT); pinMode(interVentAuto, INPUT); pinMode(interVentOff, INPUT); pinMode(interArroAuto, INPUT); pinMode(interArroOff, INPUT); pinMode(inter7, INPUT);*/ /*********************************************************************** init des capteurs * *********************************************************************/ //RTC Wire.begin(); } void loop() { /*********************************************************************** Gestion des capteurs * **********************************************************************/ //RTC bool h24, am; int heure = Clock.getHour(h24, am ); int minu = Clock.getMinute(); int HMin = heure * 60 + minu; // heure en minute Serial.println(HMin); /*********************************************************************** Gestion de la lumiere * ********************************************************************* */ if (newDay == 1) { newDay = 0; HA = random (585, 615); HE = HA + 1065 + random(30); } if (HMin == 0) { jourArrosage =1; newDay = 1; } if (HMin >= HA & HMin < HE) { //On met en route si on est dans le temps et que l'inter2 est en allumé // if (interLumBas) { Serial.println("Double lumiere ON"); digitalWrite(Bas, LOW); digitalWrite(Haut, LOW); } /*else { Serial.println("Lumiere haut ON"); digitalWrite(Haut, LOW); } }*/ else { Serial.println("Lumiere Eteint"); digitalWrite(Bas, HIGH); digitalWrite(Haut, HIGH); } /*********************************************************************** Gestion de l'extraction * *********************************************************************/ if (minu >= 50) { Serial.println("Extracteur ON"); digitalWrite(Ventil, LOW); } else { Serial.println("Extracteur OFF"); digitalWrite(Ventil, HIGH); } /*********************************************************************** Gestion de l'arrosage * *********************************************************************/ if (HMin == 1018 & jourArrosage) { jourArrosage = 0; Serial.println("arro ON"); digitalWrite(Arro, LOW); delay(40000); digitalWrite(Arro, HIGH); Serial.println("arro Off"); } delay(10000); }