tmp.ino 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. #include <OneWire.h>
  2. #include <DS18B20.h> //DS18B20_RT by rob tillaart
  3. #include <DS3231.h> //DS3231 by andrew wickert
  4. #include <Wire.h>
  5. //pin relay
  6. const int Rouge1Pin = 3;
  7. const int Rouge2Pin = 4;
  8. const int Bleu1Pin = 5;
  9. const int Bleu2Pin = 6;
  10. const int Bleu3Pin = 7;
  11. const int DehumPin = 8;
  12. const int VentilPin = 9;
  13. const int ExtracteurPin = 10;
  14. const int ArroFlo = 11;
  15. const int ArroCroi = 12;
  16. const int Evacuation = 13;
  17. //pin inter
  18. const int inter1 = 22; //inter extinction lumiere
  19. const int inter2 = 24; //inter marche forcé ventilation
  20. const int inter3 = 26;
  21. const int inter4 = 28;
  22. const int inter5 = 30;
  23. const int inter6 = 32;
  24. const int inter7 = 34;
  25. const int inter8 = 36;
  26. const int inter9 = 38;
  27. const int inter10 = 40;
  28. //pin Capteur
  29. #define ONE_WIRE_TEMP 14
  30. // humide air 15
  31. const int HumidSolCro = 46;
  32. const int HumidSolFlo = 48;
  33. //Variable lumiere
  34. int newDay = 1; // Variable pour savoir si nouveau jour.
  35. int HAFlo; //heure allumage floraison en minute (9H45 ou 10H15)
  36. int HEFlo; //heure extinction floraison en minute (HaFlo +12H +/-15min)
  37. int HACro; //heure allumage croissance en minute (4H45 ou 5H15)
  38. int HECro; //heure extinction croissance en minute (HaFlo +18H +/-15min)
  39. OneWire oneWireTemp(ONE_WIRE_TEMP);
  40. DS18B20 Temp(&oneWireTemp);
  41. DS3231 Clock;
  42. void setup() {
  43. Serial.begin(9600);
  44. /***********************************************************************
  45. init des pins
  46. * *********************************************************************
  47. */
  48. pinMode(Rouge1Pin, OUTPUT);
  49. pinMode(Rouge2Pin, OUTPUT);
  50. pinMode(Bleu1Pin, OUTPUT);
  51. pinMode(Bleu2Pin, OUTPUT);
  52. pinMode(Bleu3Pin, OUTPUT);
  53. pinMode(DehumPin, OUTPUT);
  54. pinMode(VentilPin, OUTPUT);
  55. pinMode(ExtracteurPin, OUTPUT);
  56. pinMode(ArroFlo, OUTPUT);
  57. pinMode(ArroCroi, OUTPUT);
  58. pinMode(Evacuation, OUTPUT);
  59. pinMode(inter1, INPUT); //extinction lumiere
  60. pinMode(inter2, INPUT); //inter marche forcé ventilation
  61. pinMode(inter3, INPUT); //60%/70%
  62. pinMode(inter4, INPUT); //croissance mere
  63. pinMode(inter5, INPUT);
  64. pinMode(inter6, INPUT); //Arrosage1 on
  65. pinMode(inter7, INPUT); //Arrosage2 on
  66. pinMode(inter8, INPUT); //pompe vidange on
  67. pinMode(inter9, INPUT); //Arrosage flo auto
  68. pinMode(inter10, INPUT); //Arrosage Cro auto
  69. pinMode(HumidSolCro, INPUT);
  70. pinMode(HumidSolFlo, INPUT);
  71. /***********************************************************************
  72. init des capteurs
  73. * *********************************************************************
  74. */
  75. Wire.begin();
  76. Temp.begin();
  77. Temp.setResolution(12);
  78. }
  79. void loop() {
  80. /***********************************************************************
  81. Gestion des capteurs
  82. * *********************************************************************
  83. */
  84. //temperature
  85. Temp.requestTemperatures();
  86. while (!Temp.isConversionComplete());
  87. float Temper = Temp.getTempC();
  88. //heure
  89. bool h24, am;
  90. int heure = Clock.getHour(h24, am );
  91. int minu = Clock.getMinute();
  92. int HMin = heure * 60 + minu; // heure en minute
  93. //Hydrometrie
  94. /***********************************************************************
  95. Gestion de la lumiere
  96. * *********************************************************************
  97. */
  98. if (newDay == 1) {
  99. newDay = 0;
  100. HAFlo = random (585, 615);
  101. HEFlo = HAFlo + 705 + random(30);
  102. HACro = random (285, 315);
  103. HECro = HACro + 1065 + random(30);
  104. }
  105. if (HMin == 0)
  106. newDay = 1;
  107. if (HMin >= HAFlo & HMin < HEFlo) {
  108. digitalWrite(Rouge1Pin, LOW);
  109. digitalWrite(Rouge2Pin, LOW);
  110. }
  111. else {
  112. digitalWrite(Rouge1Pin, HIGH);
  113. digitalWrite(Rouge2Pin, HIGH);
  114. }
  115. if (HMin >= HACro & HMin < HECro) {
  116. digitalWrite(Bleu1Pin, LOW);
  117. digitalWrite(Bleu2Pin, LOW);
  118. digitalWrite(Bleu3Pin, LOW);
  119. }
  120. else {
  121. digitalWrite(Bleu1Pin, HIGH);
  122. digitalWrite(Bleu2Pin, HIGH);
  123. digitalWrite(Bleu3Pin, HIGH);
  124. }
  125. /***********************************************************************
  126. Gestion de l'extraction
  127. * *********************************************************************
  128. */
  129. if (minu == 0 | minu == 1 | Temper >= 27)
  130. digitalWrite(ExtracteurPin, LOW);
  131. else
  132. digitalWrite(ExtracteurPin, HIGH);
  133. delay(10000);
  134. }