|
|
@@ -10,21 +10,38 @@
|
|
|
*****************************************************************/
|
|
|
//relay Lumiere
|
|
|
const int RougeHaut = 2;
|
|
|
-const int RougeBas = 3;
|
|
|
-const int BleuHaut = 4;
|
|
|
+const int BleuHaut = 3;
|
|
|
+const int RougeBas = 4;
|
|
|
const int BleuBas = 5;
|
|
|
-const int TousBas = 6;
|
|
|
-const int TousHaut = 7;
|
|
|
|
|
|
//relay Ventilation
|
|
|
-const int DehumPin = 8;
|
|
|
-const int VentilHaut = 9;
|
|
|
-const int VentilBas = 10;
|
|
|
-const int Extracteur = 11;
|
|
|
+const int DehumPin = 6;
|
|
|
+const int Extracteur = 7;
|
|
|
+const int VentilHaut = 8;
|
|
|
+const int VentilBas = 9;
|
|
|
|
|
|
//relay Arrosage
|
|
|
-const int Arro = 12;
|
|
|
-const int Evacuation = 13;
|
|
|
+const int Arro1 = 10;
|
|
|
+const int Arro2 = 11;
|
|
|
+const int Evacuation = 12;
|
|
|
+
|
|
|
+//Capteur niveau eau
|
|
|
+const int NiveauEauRecup = 13;
|
|
|
+const int NiveauEauAqua = 14;
|
|
|
+
|
|
|
+//Capteur Temp
|
|
|
+#define ONE_WIRE_TEMP 15
|
|
|
+OneWire oneWireTemp(ONE_WIRE_TEMP);
|
|
|
+DS18B20 Temp(&oneWireTemp);
|
|
|
+
|
|
|
+//capteur Hum air
|
|
|
+#define DHTTYPE DHT11
|
|
|
+#define DHTPIN 16
|
|
|
+DHT dht(DHTPIN, DHTTYPE);
|
|
|
+
|
|
|
+//Capteur hum sol
|
|
|
+const int HumidSolHaut = 17;
|
|
|
+const int HumidSolBas = 18;
|
|
|
|
|
|
//interupteur
|
|
|
const int interType = 22;
|
|
|
@@ -38,20 +55,6 @@ const int interOFFAro = 36;
|
|
|
const int inter9 = 38;
|
|
|
const int inter10 = 40;
|
|
|
|
|
|
-//Capteur Temp
|
|
|
-#define ONE_WIRE_TEMP 14
|
|
|
-OneWire oneWireTemp(ONE_WIRE_TEMP);
|
|
|
-DS18B20 Temp(&oneWireTemp);
|
|
|
-
|
|
|
-//capteur Hum air
|
|
|
-#define DHTTYPE DHT22
|
|
|
-#define DHTPIN 15
|
|
|
-DHT dht(DHTPIN, DHTTYPE);
|
|
|
-
|
|
|
-//Capteur hum sol
|
|
|
-const int HumidSolHaut = 16;
|
|
|
-const int HumidSolBas = 17;
|
|
|
-
|
|
|
//RTC
|
|
|
DS3231 Clock;
|
|
|
|
|
|
@@ -69,7 +72,7 @@ int tmpExtract = 0, humExtract;
|
|
|
int extract;
|
|
|
|
|
|
//Variabe Arrosage
|
|
|
-const int delaySecArrosage = 20;
|
|
|
+const int delaySecArro = 20;
|
|
|
const int delaySecEvacuation = 30;
|
|
|
int HeuArrosage;
|
|
|
/***********************************************************************
|
|
|
@@ -87,18 +90,28 @@ void setup() {
|
|
|
pinMode(RougeBas, OUTPUT);
|
|
|
pinMode(BleuHaut, OUTPUT);
|
|
|
pinMode(BleuBas, OUTPUT);
|
|
|
- pinMode(TousBas, OUTPUT);
|
|
|
- pinMode(TousHaut, OUTPUT);
|
|
|
+ digitalWrite(RougeHaut, HIGH);
|
|
|
+ digitalWrite(RougeBas, HIGH);
|
|
|
+ digitalWrite(BleuHaut, HIGH);
|
|
|
+ digitalWrite(BleuBas, HIGH);
|
|
|
|
|
|
//Pin ventilation
|
|
|
pinMode(DehumPin, OUTPUT);
|
|
|
+ pinMode(Extracteur, OUTPUT);
|
|
|
pinMode(VentilHaut, OUTPUT);
|
|
|
pinMode(VentilBas, OUTPUT);
|
|
|
- pinMode(Extracteur, OUTPUT);
|
|
|
+ digitalWrite(DehumPin, HIGH);
|
|
|
+ digitalWrite(Extracteur, HIGH);
|
|
|
+ digitalWrite(VentilHaut, HIGH);
|
|
|
+ digitalWrite(VentilBas, HIGH);
|
|
|
|
|
|
//Pin Arrosage
|
|
|
- pinMode(Arro, OUTPUT);
|
|
|
+ pinMode(Arro1, OUTPUT);
|
|
|
+ pinMode(Arro2, OUTPUT);
|
|
|
pinMode(Evacuation, OUTPUT);
|
|
|
+ digitalWrite(Arro1, HIGH);
|
|
|
+ digitalWrite(Arro2, HIGH);
|
|
|
+ digitalWrite(Evacuation, HIGH);
|
|
|
|
|
|
//interupteur
|
|
|
pinMode(interType, INPUT);
|
|
|
@@ -112,7 +125,6 @@ void setup() {
|
|
|
pinMode(inter9, INPUT);
|
|
|
pinMode(inter10, INPUT);
|
|
|
|
|
|
-
|
|
|
/***********************************************************************
|
|
|
init des capteurs
|
|
|
* *********************************************************************/
|
|
|
@@ -153,13 +165,22 @@ void loop() {
|
|
|
int minu = Clock.getMinute();
|
|
|
int HMin = heure * 60 + minu; // heure en minute
|
|
|
|
|
|
+ Serial.print("H:");
|
|
|
+ Serial.print(HMin / 60);
|
|
|
+ Serial.print(":");
|
|
|
+ Serial.print(HMin);
|
|
|
+ Serial.print(" T:");
|
|
|
+ Serial.print(Temper);
|
|
|
+ Serial.print(" Hum:");
|
|
|
+ Serial.println(hum);
|
|
|
+
|
|
|
/***********************************************************************
|
|
|
Gestion de la lumiere
|
|
|
* *********************************************************************
|
|
|
*/
|
|
|
if (newDay == 1) {
|
|
|
newDay = 0;
|
|
|
- if (interType) { //SI intertype ==1 alors Flo
|
|
|
+ if (digitalRead(interType)) { //SI intertype ==1 alors Flo
|
|
|
Serial.println("Floraison");
|
|
|
HA = random (585, 615);
|
|
|
HE = HA + 705 + random(15);
|
|
|
@@ -174,27 +195,22 @@ void loop() {
|
|
|
if (HMin == 0)
|
|
|
newDay = 1;
|
|
|
|
|
|
- if (interType) {
|
|
|
- if (HMin >= HA & HMin < HE) {
|
|
|
- if (interLum) {
|
|
|
- digitalWrite(RougeHaut, LOW);
|
|
|
- digitalWrite(TousHaut, LOW);
|
|
|
- digitalWrite(RougeBas, LOW);
|
|
|
- digitalWrite(TousBas, LOW);
|
|
|
- }
|
|
|
+ if (HMin >= HA & HMin < HE & digitalRead(interLum)) {
|
|
|
+ digitalWrite(RougeHaut, LOW);
|
|
|
+ digitalWrite(RougeBas, LOW);
|
|
|
+ if (digitalRead(interType)) { //SI flo
|
|
|
+ digitalWrite(BleuBas, LOW);
|
|
|
+ digitalWrite(BleuHaut, LOW);
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
- if (HMin >= HA & HMin < HE) {
|
|
|
- if (interLum) {
|
|
|
- digitalWrite(BleuHaut, LOW);
|
|
|
- digitalWrite(TousHaut, LOW);
|
|
|
- digitalWrite(BleuBas, LOW);
|
|
|
- digitalWrite(TousBas, LOW);
|
|
|
- }
|
|
|
- }
|
|
|
+ digitalWrite(RougeHaut, HIGH);
|
|
|
+ digitalWrite(RougeBas, HIGH);
|
|
|
+ digitalWrite(BleuBas, HIGH);
|
|
|
+ digitalWrite(BleuHaut, HIGH);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/***********************************************************************
|
|
|
Gestion de l'extraction
|
|
|
* *********************************************************************/
|
|
|
@@ -208,72 +224,81 @@ void loop() {
|
|
|
tmpExtract = 0;
|
|
|
}
|
|
|
|
|
|
- if (interType==0 & hum > 70) {
|
|
|
+ if (digitalRead(interType) == 0 & hum > 70) {
|
|
|
Serial.println("interType est en croi et plus de 70% d'hum");
|
|
|
humExtract = 1;
|
|
|
}
|
|
|
- else if ( interType == 0 & hum > 60) {
|
|
|
+ else if ( digitalRead(interType) == 0 & hum > 60) {
|
|
|
Serial.println("interType est en flo et plus de 60 % d'hum");
|
|
|
humExtract = 1;
|
|
|
}
|
|
|
else
|
|
|
humExtract = 0;
|
|
|
|
|
|
- if (minu == 0 | minu == 1 | tmpExtract | humExtract | interONExt){
|
|
|
+ if (minu == 0 | minu == 1 | tmpExtract | humExtract | digitalRead(interONExt)) {
|
|
|
Serial.println("Extracteur ON");
|
|
|
digitalWrite(Extracteur, LOW);
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
Serial.println("Extracteur OFF");
|
|
|
digitalWrite(Extracteur, HIGH);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
|
|
|
/***********************************************************************
|
|
|
Gestion de la ventilation
|
|
|
* *********************************************************************/
|
|
|
- if(minu>=55 | interONVentil | tmpExtract | humExtract ){
|
|
|
+ if (minu >= 55 | digitalRead(interONVentil) | tmpExtract | humExtract ) {
|
|
|
Serial.println("Ventilation ON");
|
|
|
digitalWrite(VentilHaut, LOW);
|
|
|
digitalWrite(VentilBas, LOW);
|
|
|
}
|
|
|
- else{
|
|
|
+ else {
|
|
|
Serial.println("Ventilation OFF");
|
|
|
digitalWrite(VentilHaut, HIGH);
|
|
|
digitalWrite(VentilBas, HIGH);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/***********************************************************************
|
|
|
Gestion de l'arrosage
|
|
|
* *********************************************************************/
|
|
|
|
|
|
- if ((HumidSolBas | HumidSolHaut) & interOFFAro==0) {
|
|
|
+ if ((HumidSolBas | HumidSolHaut) & digitalRead(interOFFAro) == 0 & digitalRead(interONAro) == 0) {
|
|
|
Serial.println("Arrosage");
|
|
|
- digitalWrite(Arro, LOW);
|
|
|
- }
|
|
|
-
|
|
|
- if(){
|
|
|
- digitalWrite(Arro, HIGH);
|
|
|
+ digitalWrite(Arro1, LOW);
|
|
|
+ digitalWrite(Arro2, LOW);
|
|
|
+ delay(delaySecArro * 1000 );
|
|
|
+ digitalWrite(Arro1, HIGH);
|
|
|
+ digitalWrite(Arro2, HIGH);
|
|
|
HeuArrosage = HMin;
|
|
|
}
|
|
|
|
|
|
- if (inter7)
|
|
|
- digitalWrite(Arro, LOW);
|
|
|
- else
|
|
|
- digitalWrite(Arro, HIGH);
|
|
|
-
|
|
|
- if (HeuArrosage + 10 == HMin) {
|
|
|
- Serial.println("Arrosage");
|
|
|
+ if (HeuArrosage + 10 == HMin & digitalRead(interOFFAro) == 0 & digitalRead(interONVid) == 0) {
|
|
|
+ Serial.println("Evacuation");
|
|
|
digitalWrite(Evacuation, LOW);
|
|
|
delay(delaySecEvacuation * 1000 );
|
|
|
digitalWrite(Evacuation, HIGH);
|
|
|
}
|
|
|
|
|
|
- if (inter8)
|
|
|
+ if (digitalRead(interONVid)) {
|
|
|
+ Serial.println("Evacuation manuel");
|
|
|
digitalWrite(Evacuation, LOW);
|
|
|
+ }
|
|
|
else
|
|
|
digitalWrite(Evacuation, HIGH);
|
|
|
|
|
|
|
|
|
- delay(5000);
|
|
|
+ if (digitalRead(interONAro)) {
|
|
|
+ Serial.println("Arrosage manuel");
|
|
|
+ digitalWrite(Arro1, LOW);
|
|
|
+ digitalWrite(Arro2, LOW);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ digitalWrite(Arro1, HIGH);
|
|
|
+ digitalWrite(Arro2, HIGH);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ delay(500);
|
|
|
+
|
|
|
}
|