| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- #include <OneWire.h>
- #include <DS18B20.h> //DS18B20_RT by rob tillaart
- #include <DS3231.h> //DS3231 by andrew wickert
- #include <Wire.h>
- #define ONE_WIRE_BUS 3
- //pin relay
- const int ExtracteurPin = 2;
- const int Rouge1Pin = 4;
- const int Rouge2Pin = 5;
- const int Bleu1Pin = 6;
- const int Bleu2Pin = 7;
- const int Bleu3Pin = 8;
- const int DehumPin = 9;
- //pin inter
- const int inter1 = 22;
- const int inter2 = 23;
- const int inter3 = 24;
- const int inter4 = 25;
- const int inter5 = 26;
- const int inter6 = 27;
- const int inter7 = 28;
- const int inter8 = 29;
- const int inter9 = 30;
- const int inter10 = 31;
- const int inter11 = 32;
- //Variable lumiere
- int newDay = 1; // Variable pour savoir si nouveau jour.
- int HAFlo; //heure allumage floraison en minute (9H45 ou 10H15)
- int HEFlo; //heure extinction floraison en minute (HaFlo +12H +/-15min)
- int HACro; //heure allumage croissance en minute (4H45 ou 5H15)
- int HECro; //heure extinction croissance en minute (HaFlo +18H +/-15min)
- OneWire oneWire(ONE_WIRE_BUS);
- DS18B20 sensor(&oneWire);
- DS3231 Clock;
- uint32_t start, stop;
- void setup() {
- Serial.begin(9600);
- /***********************************************************************
- init des pins
- * *********************************************************************
- */
- pinMode(ExtracteurPin, OUTPUT);
- pinMode(Rouge1Pin, OUTPUT);
- pinMode(Rouge2Pin, OUTPUT);
- pinMode(Bleu1Pin, OUTPUT);
- pinMode(Bleu2Pin, OUTPUT);
- pinMode(DehumPin, OUTPUT);
- pinMode(inter1, INPUT); //inter extinction lumiere
- pinMode(inter2, INPUT); //inter marche forcé ventilation
- pinMode(inter3, INPUT); //60%
- pinMode(inter4, INPUT); //70%
- pinMode(inter5, INPUT); //80%
- pinMode(inter6, INPUT); //croissance mere
- pinMode(inter7, INPUT); //croissance mere + serre
- pinMode(inter8, INPUT); //Arrosage1 on
- pinMode(inter9, INPUT); //Arrosage2 on
- pinMode(inter10, INPUT); //pompe vidange on
- pinMode(inter11, INPUT);
- /***********************************************************************
- init des capteurs
- * *********************************************************************
- */
- Wire.begin();
- sensor.begin();
- sensor.setResolution(12);
- delay(1000);
- }
- void loop() {
- /***********************************************************************
- Gestion des capteurs
- * *********************************************************************
- */
- //temperature
- Serial.println("salut1");
- sensor.requestTemperatures();
- Serial.println("salut2");
- while (!sensor.isConversionComplete());
- Serial.println("salut3");
- float temp = sensor.getTempC();
- Serial.println(temp);
- //heure
- bool h24, am;
- int heure = Clock.getHour(h24, am );
- int minu = Clock.getMinute();
- int HMin = heure * 60 + minu; // heure en minute
- Serial.println(HMin);
- //Hydrometrie
- /***********************************************************************
- Gestion de la lumiere
- * *********************************************************************
- */
- if (newDay==1) {
- newDay = 0;
- Serial.println("newDay");
- Serial.println(HMin);
- HAFlo = random (585, 615);
- Serial.println(HAFlo);
- HEFlo = HAFlo + 705 + random(30);
- Serial.println(HEFlo);
- HACro = random (285, 315);
- Serial.println(HACro);
- HECro = HACro + 1065 + random(30);
- Serial.println(HECro);
- Serial.println("fin newDay");
- }
- if (HMin == 0)
- newDay = 1;
- if (HMin >= HAFlo & HMin < HEFlo) {
- digitalWrite(Rouge1Pin, LOW);
- digitalWrite(Rouge2Pin, LOW);
- Serial.println("Alum Flo");
- }
- else {
- digitalWrite(Rouge1Pin, HIGH);
- digitalWrite(Rouge2Pin, HIGH);
- Serial.println("Ext Flo");
- }
- if (HMin >= HACro & HMin < HECro) {
- digitalWrite(Bleu1Pin, LOW);
- digitalWrite(Bleu2Pin, LOW);
- digitalWrite(Bleu3Pin, LOW);
- }
- else {
- digitalWrite(Bleu1Pin, HIGH);
- digitalWrite(Bleu2Pin, HIGH);
- digitalWrite(Bleu3Pin, HIGH);
- }
- /***********************************************************************
- Gestion de l'extraction
- * *********************************************************************
- */
- if (minu == 0 | minu == 1 | temp >= 27)
- digitalWrite(ExtracteurPin, LOW);
- else
- digitalWrite(ExtracteurPin, HIGH);
- delay(10000);
- }
|