|
@@ -0,0 +1,116 @@
|
|
|
|
|
+#include <Wire.h>//https://www.arduino.cc/en/reference/wire
|
|
|
|
|
+#include <DS3231.h>//https://github.com/NorthernWidget/DS3231
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+int inter1 = ; // inter croissance mere
|
|
|
|
|
+int inter2 = ; // inter croissance reste
|
|
|
|
|
+int inter3 = ; // inter flo
|
|
|
|
|
+int interuptRTC = ; //Entrer interrupte RTC
|
|
|
|
|
+int InterruptHydro = ; //Entrer Interrupt Hydro
|
|
|
|
|
+
|
|
|
|
|
+int Led1 = ; //Relai croissance mere
|
|
|
|
|
+int Led2 = ; //Relai croissance reste
|
|
|
|
|
+int Led3 = ; //Relai flo
|
|
|
|
|
+int Extract = ;//relai Extract
|
|
|
|
|
+int Pompe = ; //Relai pompe
|
|
|
|
|
+
|
|
|
|
|
+bool ExtractOn = True;
|
|
|
|
|
+int tmpArrosage = ; //temps d'arrosage
|
|
|
|
|
+
|
|
|
|
|
+int ON = ;
|
|
|
|
|
+int OFF = ;
|
|
|
|
|
+int IN = ;
|
|
|
|
|
+int OUT = ;
|
|
|
|
|
+
|
|
|
|
|
+enum Prochain {
|
|
|
|
|
+ AlumFlo,
|
|
|
|
|
+ AlumCroi,
|
|
|
|
|
+ ExtFlo,
|
|
|
|
|
+ ExtCroi
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+enum Prochain pro = AlumFlo;
|
|
|
|
|
+
|
|
|
|
|
+void fc_InterHydro(){
|
|
|
|
|
+ //Voir si rearmer l'interuption
|
|
|
|
|
+ SI alarm1 :
|
|
|
|
|
+ LED();
|
|
|
|
|
+ Si alarm2 :
|
|
|
|
|
+ extracteur();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void fc_InterHydro(){
|
|
|
|
|
+ writepin(Pompe,ON);
|
|
|
|
|
+ sleep(tmpArrosage);
|
|
|
|
|
+ writepin(Pompe,OFF);
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void extracteur(){
|
|
|
|
|
+ //remiseAlarm2 +15min
|
|
|
|
|
+ if(ExtractOn)
|
|
|
|
|
+ writepin(Extract,OFF);
|
|
|
|
|
+ else
|
|
|
|
|
+ writepin(Extract,ON);
|
|
|
|
|
+ ExtractOn= ~ExtractOn;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void LED(){
|
|
|
|
|
+ Switch (pro){
|
|
|
|
|
+ case(AlumCroi):
|
|
|
|
|
+ pro = AlumFlo;
|
|
|
|
|
+ //rearmer l'alarm +2H
|
|
|
|
|
+ if(readpin(inter1))
|
|
|
|
|
+ writepin(Led1,ON);
|
|
|
|
|
+ if(readpin(inter1))
|
|
|
|
|
+ writepin(Led2,ON);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case(AlumFlo):
|
|
|
|
|
+ pro = ExtFlo;
|
|
|
|
|
+ //rearmer l'alarm +12H
|
|
|
|
|
+ if (readpin(inter3))
|
|
|
|
|
+ writepin(Led3,ON);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case(ExtFlo):
|
|
|
|
|
+ pro = ExtCroi;
|
|
|
|
|
+ //rearmer l'alarm +2H
|
|
|
|
|
+ writepin(Led3,OFF);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case(ExtCroi):
|
|
|
|
|
+ pro = AlumCroi;
|
|
|
|
|
+ //rearmer l'alarm +8H
|
|
|
|
|
+ writepin(Led1,OFF);
|
|
|
|
|
+ writepin(Led2,OFF);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void setup() {
|
|
|
|
|
+ DS3231();
|
|
|
|
|
+ //init I/O
|
|
|
|
|
+ inter1 ;
|
|
|
|
|
+ inter2 ;
|
|
|
|
|
+ inter3 ;
|
|
|
|
|
+ interuptRTC ;
|
|
|
|
|
+ InterruptHydro ;
|
|
|
|
|
+
|
|
|
|
|
+ Led1 ;
|
|
|
|
|
+ Led2 ;
|
|
|
|
|
+ Led3 ;
|
|
|
|
|
+ Extract ;
|
|
|
|
|
+ Pompe ;
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ * Interruption
|
|
|
|
|
+ */
|
|
|
|
|
+ PCintPort::attachInterrupt(InteruptRTC, fc_InterRTC, FALLING);
|
|
|
|
|
+ PCintPort::attachInterrupt(InterruptHydro, fc_InterHydro, FALLING);}
|
|
|
|
|
+
|
|
|
|
|
+void loop() {
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|