Mere.ino 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #include <DS3231.h> //RTC DS3231 by andrew wickert
  2. #include <Wire.h>
  3. /*****************************************************************
  4. Déclaration des Capteurs
  5. *****************************************************************/
  6. //relay Lumiere
  7. const int Haut = 2;
  8. const int Bas = 3;
  9. //relay Ventilation
  10. const int Ventil = 4;
  11. //relay Arrosage
  12. const int Arro = 5;
  13. //Interrupteur
  14. const int interLumBas = 6; //inter Lumiere bas ON/OFF
  15. const int interLumOff = 7; //inter Lumiere OFF
  16. const int interVentAuto = 8; //inter Ventilation ON/Auto
  17. const int interVentOff = 9; //inter Ventilation OFF
  18. const int interArroAuto = 10;//inter Arro ON/Auto
  19. const int interArroOff = 11;//inter Arro OFF
  20. const int inter7 = 12;
  21. //RTC
  22. DS3231 Clock;
  23. /*****************************************************************
  24. Déclaration des Variables globals
  25. *****************************************************************/
  26. //Variable lumiere
  27. int newDay = 1; // Variable pour savoir si nouveau jour.
  28. int HA; //heure allumage en minute
  29. int HE; //heure extinction en minute (Ha +18H +/-15min)
  30. //Variable Extraction
  31. int tmpExtract, humExtract;
  32. int extract;
  33. //Variabe Arrosage
  34. const int delaySecArrosage = 20;
  35. int HeuArrosage;
  36. int jourArrosage = 0;
  37. /***********************************************************************
  38. Setup
  39. **********************************************************************/
  40. void setup() {
  41. Serial.begin(9600);
  42. /***********************************************************************
  43. init des pins
  44. * *********************************************************************/
  45. //PIN Lumiere
  46. pinMode(Haut, OUTPUT);
  47. pinMode(Bas, OUTPUT);
  48. //Pin ventilation
  49. pinMode(Ventil, OUTPUT);
  50. //Pin Arrosage
  51. pinMode(Arro, OUTPUT);
  52. //interupteur
  53. pinMode(interLumBas, INPUT);
  54. pinMode(interLumOff, INPUT);
  55. pinMode(interVentAuto, INPUT);
  56. pinMode(interVentOff, INPUT);
  57. pinMode(interArroAuto, INPUT);
  58. pinMode(interArroOff, INPUT);
  59. pinMode(inter7, INPUT);
  60. /***********************************************************************
  61. init des capteurs
  62. * *********************************************************************/
  63. //RTC
  64. Wire.begin();
  65. }
  66. void loop() {
  67. /***********************************************************************
  68. Gestion des capteurs
  69. * **********************************************************************/
  70. //RTC
  71. bool h24, am;
  72. int heure = Clock.getHour(h24, am );
  73. int minu = Clock.getMinute();
  74. int HMin = heure * 60 + minu; // heure en minute
  75. /***********************************************************************
  76. Gestion de la lumiere
  77. * *********************************************************************
  78. */
  79. if (newDay == 1) {
  80. newDay = 0;
  81. HA = random (585, 615);
  82. HE = HA + 705 + random(30);
  83. }
  84. if (HMin == 0) {
  85. newDay = 1;
  86. jourArrosage ++;
  87. }
  88. if (HMin >= HA & HMin < HE & interLumOff) { //On met en route si on est dans le temps et que l'inter2 est en allumé
  89. if (interLumBas) {
  90. Serial.println("Double lumiere ON");
  91. digitalWrite(Bas, LOW);
  92. digitalWrite(Haut, LOW);
  93. }
  94. else {
  95. Serial.println("Lumiere haut ON");
  96. digitalWrite(Haut, LOW);
  97. }
  98. }
  99. else {
  100. Serial.println("Lumiere Eteint");
  101. digitalWrite(Bas, HIGH);
  102. digitalWrite(Haut, HIGH);
  103. }
  104. /***********************************************************************
  105. Gestion de l'extraction
  106. * *********************************************************************/
  107. if ((minu >= 50 | interVentAuto )& interVentOff) {
  108. Serial.println("Extracteur ON");
  109. digitalWrite(Ventil, LOW);
  110. }
  111. else {
  112. Serial.println("Extracteur OFF");
  113. digitalWrite(Ventil, HIGH);
  114. }
  115. /***********************************************************************
  116. Gestion de l'arrosage
  117. * *********************************************************************/
  118. if (HMin == 1020) {
  119. jourArrosage = 0;
  120. Serial.println("Extracteur ON");
  121. digitalWrite(Arro, LOW);
  122. delay(40000);
  123. digitalWrite(Arro, HIGH);
  124. }
  125. delay(10000);
  126. }