nikolas77

Programmateur Horaire Arduino

Jun 30th, 2020
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 456.28 KB | None | 0 0
  1. //**************************************************************************************************************************************************************************
  2. //*********************************************** Programmateur Horaire - Ecran TFT Tactile v1.0 - Carte Mega (com52) ******************************************************
  3. //**************************************************************************************************************************************************************************
  4. #include <SPI.h>                                                                                                        // Librairie pour la gestion de la communication SPI avec le Module Horloge DS3234
  5. #include <SparkFunDS3234RTC.h>                                                                                          // Librairie pour la gestion du Module Horloge DS3234
  6. #include "DHT.h"                                                                                                        // Librairie pour la gestion du Capteur DHT22 (Température et Taux Humidité)
  7. #include <Adafruit_GFX.h>                                                                                               // Librairie pour la Gestion Graphique
  8. #include <Adafruit_TFTLCD.h>                                                                                            // Librairie pour la Gestion Graphique Spécifique à l'écran TFT
  9. #include <MCUFRIEND_kbv.h>                                                                                              // Librairie pour la Gestion Spécifique Spécifique à l'écran TFT
  10. #include <TouchScreen.h>                                                                                                // Librairie pour la Gestion de la Fonction Tactile de l'écran TFT
  11. #include "EEPROM.h"                                                                                                     // Librairie pour la gestion de l'EEPROM interne
  12. #include <avr/pgmspace.h>                                                                                               // Librairie pour la Gestion de la Mémoire
  13.  
  14. #define DHTTYPE DHT22                                                                                                   // Définit le type de capteur DHT22 (Température et Taux Humidité)
  15.  
  16. MCUFRIEND_kbv tft;                                                                                                      // Crée l'objet tft
  17.  
  18. #define BrocheDS3234                   53                                                                               // Broche SS du Module Horloge DS3234
  19. #define BrocheCapteurDHT22             41                                                                               // Broche du Capteur DHT22
  20. #define BrocheBuzzer                   23                                                                               // Broche du Buzzer 5v
  21. #define BrocheProg1LedVerte            24                                                                               // Broche sortie programmateur 1 Led Verte
  22. #define BrocheProg2LedVerte            25                                                                               // Broche sortie programmateur 2 Led Verte
  23. #define BrocheBPONOFFProg1             30                                                                               // Broche du bouton poussoir "BPONOFFProg1"
  24. #define BrocheBPONOFFProg2             31                                                                               // Broche du bouton poussoir "BPONOFFProg2"
  25.  
  26. uint8_t YP = A1;                                                                                                        // Broche pour la fonction tactile de l'écran TFT
  27. uint8_t XM = A2;                                                                                                        // Broche pour la fonction tactile de l'écran TFT
  28. uint8_t YM = 7;                                                                                                         // Broche pour la fonction tactile de l'écran TFT
  29. uint8_t XP = 6;                                                                                                         // Broche pour la fonction tactile de l'écran TFT
  30.  
  31. uint16_t TS_LEFT = 880;                                                                                                 // Calibrage de l'écran pour la fonction tactile
  32. uint16_t TS_RT  = 180;
  33. uint16_t TS_TOP = 170;
  34. uint16_t TS_BOT = 950;
  35.  
  36. TouchScreen ts = TouchScreen(XP, YP, XM, YM, 260);                                                                      // Crée l'objet ts
  37. TSPoint tp;                                                                                                             // Crée l'objet tp
  38.  
  39. #define PressionMin 5                                                                                                   // Pression Min et Max acceptées
  40. #define PressionMax 1000
  41.  
  42. int PageCourante = 0;                                                                                                   // Page courante
  43. int LastPageCourante = -1;                                                                                              // Dernière Page courante
  44.  
  45. int Hrs = 0;                                                                                                            // Heure Courante
  46. int Mins = 0;                                                                                                           // Minutes courantes
  47. int Secs = 0;                                                                                                           // Seconde Courantes
  48. int LastMins = -1;                                                                                                      // Dernière minutes courantes
  49. int HrsReglages = 0;                                                                                                    // Heure Courante de réglages
  50. int MinsReglages = 0;                                                                                                   // Minutes courantes de réglages
  51. int LastHrsReglages = -1;                                                                                               // Dernières heures courantes de réglages
  52. int LastMinsReglages = -1;                                                                                              // Dernières minutes courantes de réglages
  53. int LastJourSemaine = -1;                                                                                               // Dernière valeur du jour de la semaine pour la réinitialisation des températures Min et Max tous les jours à minuit
  54.  
  55. int Jour = 0;                                                                                                           // Jour du mois de la date courante (1 à 31)
  56. int Mois = 0;                                                                                                           // Mois de la date courante (1 à 12)
  57. int Annee = 0;                                                                                                          // Année de la date courante (0 à 99)
  58. int JourSemaine = 0;                                                                                                    // Jour de la semaine (1 à 7)
  59. String JDLS = "";                                                                                                       // Variable contenant le jour de la semaine
  60. String MDLA = "";                                                                                                       // Variable contenant le mois de l'année
  61. int LastJour = -1;                                                                                                      // Dernier jour du mois courant
  62. int LastAffichageJourSemaine = -1;                                                                                      // Dernier indicateur courant du changement du jour de la semaine
  63. int AffichageJourSemaine = 0;                                                                                           // Indicateur courant du changement du jour de la semaine
  64. int JourSemaineReglages = 0;                                                                                            // Jours de la semaine de réglages
  65. int LastJourReglages = -1;                                                                                              // Dernier jour courant de réglages
  66. int JourReglages = 0;                                                                                                   // Jours de réglages
  67. int LastMoisReglages = -1;                                                                                              // Dernier mois courant de réglages
  68. int MoisReglages = 0;                                                                                                   // Mois de réglages
  69. int LastAnneeReglages = -1;                                                                                             // Dernière année courante de réglages indicateur courant du changement de l'année
  70. int AnneeReglages = 0;                                                                                                  // Année de réglages
  71.  
  72. float temperatureCourante = 0;                                                                                          // Température courante relevée par le capteur DHT22
  73. float LasttemperatureCourante = -1;                                                                                     // Dernière température courante relevée par le capteur DHT22
  74. float MaxTemp = -1;                                                                                                     // Température Max courante
  75. float MinTemp = -1;                                                                                                     // Température Min courante
  76. float LastMaxTemp = -1;                                                                                                 // Dernière température Max courante
  77. float LastMinTemp = -1;                                                                                                 // Dernière température Min courante
  78. float temperatureThermostat1 = 20.0;                                                                                    // Température du thermostat 1
  79. float LasttemperatureThermostat1 = -1;                                                                                  // Dernière température du thermostat 1
  80. float temperatureThermostat2 = 20.0;                                                                                    // Température du thermostat 2
  81. float LasttemperatureThermostat2 = 20.0;                                                                                // Dernière température du thermostat 2
  82. int ModeThermostat1 = 0;                                                                                                // Mode de fonctionnement du thermostat 1
  83. int LastModeThermostat1 = -1;                                                                                           // Dernière valeur du mode de fonctionnement du thermostat 1
  84. int ModeThermostat2 = 0;                                                                                                // Mode de fonctionnement du thermostat 2
  85. int LastModeThermostat2 = -1;                                                                                           // Dernière valeur du mode de fonctionnement du thermostat 2
  86. float LastAffichageTemperatureModeThermostat1 = -1;                                                                     // Variable pour forcer l'affichage de la température courante sur la page de réglage du thermostat 1
  87. float LastAffichageTemperatureModeThermostat2 = -1;                                                                     // Variable pour forcer l'affichage de la température courante sur la page de réglage du thermostat 2
  88.  
  89. int LastHrsDepartReglages = -1;                                                                                         // Dernière Heure de départ de réglages
  90. int LastMinsDepartReglages = -1;                                                                                        // Dernière Minutes de départ de réglages
  91. int LastHrsArretReglages = -1;                                                                                          // Dernière Heures d'arrêt de réglages
  92. int LastMinsArretReglages = -1;                                                                                         // Dernière Minutes d'arrêt de réglages
  93. int HrsDepartReglages = 0;                                                                                              // Heure de départ de réglages
  94. int MinsDepartReglages = 0;                                                                                             // Minutes de départ de réglages
  95. int HrsArretReglages = 0;                                                                                               // Heures d'arrêt de réglages
  96. int MinsArretReglages = 0;                                                                                              // Minutes d'arrêt de réglages
  97.  
  98. int HrsDepartProg1a = 0;                                                                                                // Heure de départ du programmateur 1a
  99. int MinsDepartProg1a = 0;                                                                                               // Minutes de départ du programmateur 1a
  100. int HrsArretProg1a = 0;                                                                                                 // Heures d'arrêt du programmateur 1a
  101. int MinsArretProg1a = 0;                                                                                                // Minutes d'arrêt du programmateur 1a
  102. int LastAffichageHeuresProg1a = -1;                                                                                     // Dernier indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 1a
  103. int AffichageHeuresProg1a = 0;                                                                                          // Indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 1a
  104. int IterationProg1a [] = {0, 0, 0, 0, 0, 0, 0};                                                                         // Itération du programmateur 1a
  105. int LastAffichageIterationProg1a = -1;                                                                                  // Dernier indicateur courant du changement d'itération du programmateur 1a
  106. int AffichageIterationProg1a = 0;                                                                                       // Indicateur courant du changement d'itération du programmateur 1a
  107. int LastModeProg1a = -1;                                                                                                // Dernier mode de fonctionnement courant du programmateur 1a
  108. int ModeProg1a = 0;                                                                                                     // Mode de fonctionnement courant du programmateur 1a
  109.  
  110. int HrsDepartProg1b = 0;                                                                                                // Heure de départ du programmateur 1b
  111. int MinsDepartProg1b = 0;                                                                                               // Minutes de départ du programmateur 1b
  112. int HrsArretProg1b = 0;                                                                                                 // Heures d'arrêt du programmateur 1b
  113. int MinsArretProg1b = 0;                                                                                                // Minutes d'arrêt du programmateur 1b
  114. int LastAffichageHeuresProg1b = -1;                                                                                     // Dernier indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 1b
  115. int AffichageHeuresProg1b = 0;                                                                                          // Indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 1b
  116. int IterationProg1b [] = {0, 0, 0, 0, 0, 0, 0};                                                                         // Itération du programmateur 1b
  117. int LastAffichageIterationProg1b = -1;                                                                                  // Dernier indicateur courant du changement d'itération du programmateur 1b
  118. int AffichageIterationProg1b = 0;                                                                                       // Indicateur courant du changement d'itération du programmateur 1b
  119. int LastModeProg1b = -1;                                                                                                // Dernier mode de fonctionnement courant du programmateur 1b
  120. int ModeProg1b = 0;                                                                                                     // Mode de fonctionnement courant du programmateur 1b
  121.  
  122. int HrsDepartProg1c = 0;                                                                                                // Heure de départ du programmateur 1c
  123. int MinsDepartProg1c = 0;                                                                                               // Minutes de départ du programmateur 1c
  124. int HrsArretProg1c = 0;                                                                                                 // Heures d'arrêt du programmateur 1c
  125. int MinsArretProg1c = 0;                                                                                                // Minutes d'arrêt du programmateur 1c
  126. int LastAffichageHeuresProg1c = -1;                                                                                     // Dernier indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 1c
  127. int AffichageHeuresProg1c = 0;                                                                                          // Indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 1c
  128. int IterationProg1c [] = {0, 0, 0, 0, 0, 0, 0};                                                                         // Itération du programmateur 1c
  129. int LastAffichageIterationProg1c = -1;                                                                                  // Dernier indicateur courant du changement d'itération du programmateur 1c
  130. int AffichageIterationProg1c = 0;                                                                                       // Indicateur courant du changement d'itération du programmateur 1c
  131. int LastModeProg1c = -1;                                                                                                // Dernier mode de fonctionnement courant du programmateur 1c
  132. int ModeProg1c = 0;                                                                                                     // Mode de fonctionnement courant du programmateur 1c
  133.  
  134. int HrsDepartProg2a = 0;                                                                                                // Heure de départ du programmateur 2a
  135. int MinsDepartProg2a = 0;                                                                                               // Minutes de départ du programmateur 2a
  136. int HrsArretProg2a = 0;                                                                                                 // Heures d'arrêt du programmateur 2a
  137. int MinsArretProg2a = 0;                                                                                                // Minutes d'arrêt du programmateur 2a
  138. int LastAffichageHeuresProg2a = -1;                                                                                     // Dernier indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 2a
  139. int AffichageHeuresProg2a = 0;                                                                                          // Indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 2a
  140. int IterationProg2a [] = {0, 0, 0, 0, 0, 0, 0};                                                                         // Itération du programmateur 2a
  141. int LastAffichageIterationProg2a = -1;                                                                                  // Dernier indicateur courant du changement d'itération du programmateur 2a
  142. int AffichageIterationProg2a = 0;                                                                                       // Indicateur courant du changement d'itération du programmateur 2a
  143. int LastModeProg2a = -1;                                                                                                // Dernier mode de fonctionnement courant du programmateur 2a
  144. int ModeProg2a = 0;                                                                                                     // Mode de fonctionnement courant du programmateur 2a
  145.  
  146. int HrsDepartProg2b = 0;                                                                                                // Heure de départ du programmateur 2b
  147. int MinsDepartProg2b = 0;                                                                                               // Minutes de départ du programmateur 2b
  148. int HrsArretProg2b = 0;                                                                                                 // Heures d'arrêt du programmateur 2b
  149. int MinsArretProg2b = 0;                                                                                                // Minutes d'arrêt du programmateur 2b
  150. int LastAffichageHeuresProg2b = -1;                                                                                     // Dernier indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 2b
  151. int AffichageHeuresProg2b = 0;                                                                                          // Indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 2b
  152. int IterationProg2b [] = {0, 0, 0, 0, 0, 0, 0};                                                                         // Itération du programmateur 2b
  153. int LastAffichageIterationProg2b = -1;                                                                                  // Dernier indicateur courant du changement d'itération du programmateur 2b
  154. int AffichageIterationProg2b = 0;                                                                                       // Indicateur courant du changement d'itération du programmateur 2b
  155. int LastModeProg2b = -1;                                                                                                // Dernier mode de fonctionnement courant du programmateur 2b
  156. int ModeProg2b = 0;                                                                                                     // Mode de fonctionnement courant du programmateur 2b
  157.  
  158. int HrsDepartProg2c = 0;                                                                                                // Heure de départ du programmateur 2c
  159. int MinsDepartProg2c = 0;                                                                                               // Minutes de départ du programmateur 2c
  160. int HrsArretProg2c = 0;                                                                                                 // Heures d'arrêt du programmateur 2c
  161. int MinsArretProg2c = 0;                                                                                                // Minutes d'arrêt du programmateur 2c
  162. int LastAffichageHeuresProg2c = -1;                                                                                     // Dernier indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 2c
  163. int AffichageHeuresProg2c = 0;                                                                                          // Indicateur courant du changement d'heure de départ ou d'arrêt du programmateur 2c
  164. int IterationProg2c [] = {0, 0, 0, 0, 0, 0, 0};                                                                         // Itération du programmateur 2c
  165. int LastAffichageIterationProg2c = -1;                                                                                  // Dernier indicateur courant du changement d'itération du programmateur 2c
  166. int AffichageIterationProg2c = 0;                                                                                       // Indicateur courant du changement d'itération du programmateur 2c
  167. int LastModeProg2c = -1;                                                                                                // Dernier mode de fonctionnement courant du programmateur 2c
  168. int ModeProg2c = 0;                                                                                                     // Mode de fonctionnement courant du programmateur 2c
  169.  
  170. int ModeMinuterieProg1 = 0;                                                                                             // Mode de fonctionnement de la minuterie du programmateur 1
  171. int LastModeMinuterieProg1 = -1;                                                                                        // Dernier mode de fonctionnement de la minuterie du programmateur 1
  172. int HrsMinuterieProg1 = 0;                                                                                              // Heures de la minuterie du programmateur 1
  173. int MinsMinuterieProg1 = 0;                                                                                             // Minutes de la minuterie du programmateur 1
  174. int HrsMinuterieReglageProg1 = 0;                                                                                       // Heures de réglages la minuterie du programmateur 1
  175. int MinsMinuterieReglageProg1 = 0;                                                                                      // Minutes de réglages la minuterie du programmateur 1
  176. int LastHrsReglagesMinuterie1 = -1;                                                                                     // Dernières heures de la minuterie 1 de réglages
  177. int LastMinsReglagesMinuterie1 = -1;                                                                                    // Dernières minutes de la miniterie 1 de réglages
  178. unsigned long DureeMinuterie1_ms = 0;                                                                                   // Durée de la minuterie 1 en ms
  179. unsigned long t1DebutTempoMinuterie1 = 0;                                                                               // Début de la temporisation de la minuterie 1 en ms
  180.  
  181. int ModeMinuterieProg2 = 0;                                                                                             // Mode de fonctionnement de la minuterie du programmateur 2
  182. int LastModeMinuterieProg2 = -1;                                                                                        // Dernier mode de fonctionnement de la minuterie du programmateur 2
  183. int HrsMinuterieProg2 = 0;                                                                                              // Heures de la minuterie du programmateur 2
  184. int MinsMinuterieProg2 = 0;                                                                                             // Minutes de la minuterie du programmateur 2
  185. int HrsMinuterieReglageProg2 = 0;                                                                                       // Heures de réglages la minuterie du programmateur 2
  186. int MinsMinuterieReglageProg2 = 0;                                                                                      // Minutes de réglages la minuterie du programmateur 2
  187. int LastHrsReglagesMinuterie2 = -1;                                                                                     // Dernières heures de la minuterie 2 de réglages
  188. int LastMinsReglagesMinuterie2 = -1;                                                                                    // Dernières minutes de la miniterie 2 de réglages
  189. unsigned long DureeMinuterie2_ms = 0;                                                                                   // Durée de la minuterie 2 en ms
  190. unsigned long t1DebutTempoMinuterie2 = 0;                                                                               // Début de la temporisation de la minuterie 1 en ms
  191.  
  192. boolean etatSortieProg1 = false;                                                                                        // Etat courant de la sortie du programmateur 1
  193. boolean etatSortieProg2 = false;                                                                                        // Etat courant de la sortie du programmateur 2
  194.  
  195. unsigned tempoPression = 0;                                                                                             // Début de la temporisation entre deux pressions sur l'écran tactile TFT
  196.  
  197. boolean etatBPONOFFProg1 = HIGH;                                                                                        // Etat courant du bouton poussoir "BPONOFFProg1"
  198. boolean LastetatBPONOFFProg1 = HIGH;                                                                                    // Dernier état courant du bouton poussoir "BPONOFFProg1"
  199. boolean etatBPONOFFProg2 = HIGH;                                                                                        // Etat courant du bouton poussoir "BPONOFFProg2"
  200. boolean LastetatBPONOFFProg2 = HIGH;                                                                                    // Dernier état courant du bouton poussoir "BPONOFFProg2"
  201.  
  202. #define BLACK   0x0000                                                                                                  // Variables contenant la valeur sur 16 bits des couleurs courantes
  203. #define BLUE    0x001F
  204. #define RED     0xF800
  205. #define GREEN   0x07E0
  206. #define CYAN    0x07FF
  207. #define MAGENTA 0xF81F
  208. #define YELLOW  0xFFE0
  209. #define WHITE   0xFFFF
  210. #define GRAY    0xA514
  211. #define DARKRED 0x8800
  212.  
  213. uint16_t g_identifier;                                                                                                  // Identifiant de l'écran TFT
  214. uint8_t OrientationTFT = 1;                                                                                             // Variable contenant le sens d'affichage de l'écran TFT
  215.  
  216. DHT dht(BrocheCapteurDHT22, DHTTYPE);                                                                                   // Crée l'objet "dht"
  217.  
  218. void setup()
  219. {
  220.   Serial.begin(9600);                                                                                                   // Démarre la voie série pour la communication avec la Console
  221.  
  222.   pinMode(BrocheBuzzer, OUTPUT);                                                                                        // Configure les broches en sorties
  223.   pinMode(BrocheProg1LedVerte, OUTPUT);
  224.   pinMode(BrocheProg2LedVerte, OUTPUT);
  225.  
  226.   pinMode(BrocheBPONOFFProg1, INPUT_PULLUP);                                                                            // Configure les broches en entrées
  227.   pinMode(BrocheBPONOFFProg2, INPUT_PULLUP);
  228.  
  229.   int codeEEPROM1 = 0;                                                                                                  // Initialisation de l'EEPROM à la première utilisation
  230.   int codeEEPROM2 = 0;
  231.   EEPROM.get(145, codeEEPROM1);                                                                                         // Lit les codes d'initialisation de l'EEPROM
  232.   EEPROM.get(148, codeEEPROM2);
  233.  
  234.   if (codeEEPROM1 != 6487 || codeEEPROM2 != 8521)                                                                       // Si les codes d'initialisation ne sont pas présents
  235.   {
  236.     EEPROM.put(0, HrsDepartProg1a);                                                                                     // Initialise les heures de départ du programmateur 1a si EEPROM non configurée
  237.     EEPROM.put(2, MinsDepartProg1a);                                                                                    // Initialise les minutes de départ du programmateur 1a si EEPROM non configurée
  238.     EEPROM.put(4, HrsArretProg1a);                                                                                      // Initialise les heures d'arrêt du programmateur 1a si EEPROM non configurée
  239.     EEPROM.put(6, MinsArretProg1a);                                                                                     // Initialise les minutes d'arrêt du programmateur 1a si EEPROM non configurée
  240.     EEPROM.put(8, IterationProg1a[0]);                                                                                  // Initialise l'itération du lundi du programmateur 1a si EEPROM non configurée
  241.     EEPROM.put(10, IterationProg1a[1]);                                                                                 // Initialise l'itération du mardi du programmateur 1a si EEPROM non configurée
  242.     EEPROM.put(12, IterationProg1a[2]);                                                                                 // Initialise l'itération du mercredi du programmateur 1a si EEPROM non configurée
  243.     EEPROM.put(14, IterationProg1a[3]);                                                                                 // Initialise l'itération du jeudi du programmateur 1a si EEPROM non configurée
  244.     EEPROM.put(16, IterationProg1a[4]);                                                                                 // Initialise l'itération du vendredi du programmateur 1a si EEPROM non configurée
  245.     EEPROM.put(18, IterationProg1a[5]);                                                                                 // Initialise l'itération du samedi du programmateur 1a si EEPROM non configurée
  246.     EEPROM.put(20, IterationProg1a[6]);                                                                                 // Initialise l'itération du dimanche du programmateur 1a si EEPROM non configurée
  247.     EEPROM.put(22, ModeProg1a);                                                                                         // Initialise le mode du programmateur 1a si EEPROM non configurée
  248.    
  249.     EEPROM.put(24, HrsDepartProg1b);                                                                                    // Initialise les heures de départ du programmateur 1b si EEPROM non configurée
  250.     EEPROM.put(26, MinsDepartProg1b);                                                                                   // Initialise les minutes de départ du programmateur 1b si EEPROM non configurée
  251.     EEPROM.put(28, HrsArretProg1b);                                                                                     // Initialise les heures d'arrêt du programmateur 1b si EEPROM non configurée
  252.     EEPROM.put(30, MinsArretProg1b);                                                                                    // Initialise les minutes d'arrêt du programmateur 1b si EEPROM non configurée
  253.     EEPROM.put(32, IterationProg1b[0]);                                                                                 // Initialise l'itération du lundi du programmateur 1b si EEPROM non configurée
  254.     EEPROM.put(34, IterationProg1b[1]);                                                                                 // Initialise l'itération du mardi du programmateur 1b si EEPROM non configurée
  255.     EEPROM.put(36, IterationProg1b[2]);                                                                                 // Initialise l'itération du mercredi du programmateur 1b si EEPROM non configurée
  256.     EEPROM.put(38, IterationProg1b[3]);                                                                                 // Initialise l'itération du jeudi du programmateur 1b si EEPROM non configurée
  257.     EEPROM.put(40, IterationProg1b[4]);                                                                                 // Initialise l'itération du vendredi du programmateur 1b si EEPROM non configurée
  258.     EEPROM.put(42, IterationProg1b[5]);                                                                                 // Initialise l'itération du samedi du programmateur 1b si EEPROM non configurée
  259.     EEPROM.put(44, IterationProg1b[6]);                                                                                 // Initialise l'itération du dimanche du programmateur 1b si EEPROM non configurée
  260.     EEPROM.put(46, ModeProg1b);                                                                                         // Initialise le mode du programmateur 1b si EEPROM non configurée
  261.    
  262.     EEPROM.put(48, HrsDepartProg1c);                                                                                    // Initialise les heures de départ du programmateur 1c si EEPROM non configurée
  263.     EEPROM.put(50, MinsDepartProg1c);                                                                                   // Initialise les minutes de départ du programmateur 1c si EEPROM non configurée
  264.     EEPROM.put(52, HrsArretProg1c);                                                                                     // Initialise les heures d'arrêt du programmateur 1c si EEPROM non configurée
  265.     EEPROM.put(54, MinsArretProg1c);                                                                                    // Initialise les minutes d'arrêt du programmateur 1c si EEPROM non configurée
  266.     EEPROM.put(56, IterationProg1c[0]);                                                                                 // Initialise l'itération du lundi du programmateur 1c si EEPROM non configurée
  267.     EEPROM.put(58, IterationProg1c[1]);                                                                                 // Initialise l'itération du mardi du programmateur 1c si EEPROM non configurée
  268.     EEPROM.put(60, IterationProg1c[2]);                                                                                 // Initialise l'itération du mercredi du programmateur 1c si EEPROM non configurée
  269.     EEPROM.put(62, IterationProg1c[3]);                                                                                 // Initialise l'itération du jeudi du programmateur 1c si EEPROM non configurée
  270.     EEPROM.put(64, IterationProg1c[4]);                                                                                 // Initialise l'itération du vendredi du programmateur 1c si EEPROM non configurée
  271.     EEPROM.put(66, IterationProg1c[5]);                                                                                 // Initialise l'itération du samedi du programmateur 1c si EEPROM non configurée
  272.     EEPROM.put(68, IterationProg1c[6]);                                                                                 // Initialise l'itération du dimanche du programmateur 1c si EEPROM non configurée
  273.     EEPROM.put(70, ModeProg1c);                                                                                         // Initialise le mode du programmateur 1c si EEPROM non configurée
  274.    
  275.     EEPROM.put(72, HrsDepartProg2a);                                                                                    // Initialise les heures de départ du programmateur 2a si EEPROM non configurée
  276.     EEPROM.put(74, MinsDepartProg2a);                                                                                   // Initialise les minutes de départ du programmateur 2a si EEPROM non configurée
  277.     EEPROM.put(76, HrsArretProg2a);                                                                                     // Initialise les heures d'arrêt du programmateur 2a si EEPROM non configurée
  278.     EEPROM.put(78, MinsArretProg2a);                                                                                    // Initialise les minutes d'arrêt du programmateur 2a si EEPROM non configurée
  279.     EEPROM.put(80, IterationProg2a[0]);                                                                                 // Initialise l'itération du lundi du programmateur 2a si EEPROM non configurée
  280.     EEPROM.put(82, IterationProg2a[1]);                                                                                 // Initialise l'itération du mardi du programmateur 2a si EEPROM non configurée
  281.     EEPROM.put(84, IterationProg2a[2]);                                                                                 // Initialise l'itération du mercredi du programmateur 2a si EEPROM non configurée
  282.     EEPROM.put(86, IterationProg2a[3]);                                                                                 // Initialise l'itération du jeudi du programmateur 2a si EEPROM non configurée
  283.     EEPROM.put(88, IterationProg2a[4]);                                                                                 // Initialise l'itération du vendredi du programmateur 2a si EEPROM non configurée
  284.     EEPROM.put(90, IterationProg2a[5]);                                                                                 // Initialise l'itération du samedi du programmateur 2a si EEPROM non configurée
  285.     EEPROM.put(92, IterationProg2a[6]);                                                                                 // Initialise l'itération du dimanche du programmateur 2a si EEPROM non configurée
  286.     EEPROM.put(94, ModeProg2a);                                                                                         // Initialise le mode du programmateur 2a si EEPROM non configurée
  287.    
  288.     EEPROM.put(96, HrsDepartProg2b);                                                                                    // Initialise les heures de départ du programmateur 2b si EEPROM non configurée
  289.     EEPROM.put(98, MinsDepartProg2b);                                                                                   // Initialise les minutes de départ du programmateur 2b si EEPROM non configurée
  290.     EEPROM.put(100, HrsArretProg2b);                                                                                    // Initialise les heures d'arrêt du programmateur 2b si EEPROM non configurée
  291.     EEPROM.put(102, MinsArretProg2b);                                                                                   // Initialise les minutes d'arrêt du programmateur 2b si EEPROM non configurée
  292.     EEPROM.put(104, IterationProg2b[0]);                                                                                // Initialise l'itération du lundi du programmateur 2b si EEPROM non configurée
  293.     EEPROM.put(106, IterationProg2b[1]);                                                                                // Initialise l'itération du mardi du programmateur 2b si EEPROM non configurée
  294.     EEPROM.put(108, IterationProg2b[2]);                                                                                // Initialise l'itération du mercredi du programmateur 2b si EEPROM non configurée
  295.     EEPROM.put(110, IterationProg2b[3]);                                                                                // Initialise l'itération du jeudi du programmateur 2b si EEPROM non configurée
  296.     EEPROM.put(112, IterationProg2b[4]);                                                                                // Initialise l'itération du vendredi du programmateur 2b si EEPROM non configurée
  297.     EEPROM.put(114, IterationProg2b[5]);                                                                                // Initialise l'itération du samedi du programmateur 2b si EEPROM non configurée
  298.     EEPROM.put(116, IterationProg2b[6]);                                                                                // Initialise l'itération du dimanche du programmateur 2b si EEPROM non configurée
  299.     EEPROM.put(118, ModeProg2b);                                                                                        // Initialise le mode du programmateur 2b si EEPROM non configurée
  300.    
  301.     EEPROM.put(120, HrsDepartProg2c);                                                                                   // Initialise les heures de départ du programmateur 2c si EEPROM non configurée
  302.     EEPROM.put(122, MinsDepartProg2c);                                                                                  // Initialise les minutes de départ du programmateur 2c si EEPROM non configurée
  303.     EEPROM.put(124, HrsArretProg2c);                                                                                    // Initialise les heures d'arrêt du programmateur 2c si EEPROM non configurée
  304.     EEPROM.put(126, MinsArretProg2c);                                                                                   // Initialise les minutes d'arrêt du programmateur 2c si EEPROM non configurée
  305.     EEPROM.put(128, IterationProg2c[0]);                                                                                // Initialise l'itération du lundi du programmateur 2c si EEPROM non configurée
  306.     EEPROM.put(130, IterationProg2c[1]);                                                                                // Initialise l'itération du mardi du programmateur 2c si EEPROM non configurée
  307.     EEPROM.put(132, IterationProg2c[2]);                                                                                // Initialise l'itération du mercredi du programmateur 2c si EEPROM non configurée
  308.     EEPROM.put(134, IterationProg2c[3]);                                                                                // Initialise l'itération du jeudi du programmateur 2c si EEPROM non configurée
  309.     EEPROM.put(136, IterationProg2c[4]);                                                                                // Initialise l'itération du vendredi du programmateur 2c si EEPROM non configurée
  310.     EEPROM.put(138, IterationProg2c[5]);                                                                                // Initialise l'itération du samedi du programmateur 2c si EEPROM non configurée
  311.     EEPROM.put(140, IterationProg2c[6]);                                                                                // Initialise l'itération du dimanche du programmateur 2c si EEPROM non configurée
  312.     EEPROM.put(142, ModeProg2c);                                                                                        // Initialise le mode du programmateur 2c si EEPROM non configurée
  313.    
  314.     EEPROM.put(145, 6487);                                                                                              // Mémorise les codes d'initialisation de l'EEPROM
  315.     EEPROM.put(148, 8521);
  316.   }
  317.  
  318.   EEPROM.get(0, HrsDepartProg1a);                                                                                       // Restaure les heures de départ du programmateur 1a
  319.   EEPROM.get(2, MinsDepartProg1a);                                                                                      // Restaure les minutes de départ du programmateur 1a
  320.   EEPROM.get(4, HrsArretProg1a);                                                                                        // Restaure les heures d'arrêt du programmateur 1a
  321.   EEPROM.get(6, MinsArretProg1a);                                                                                       // Restaure les minutes d'arrêt du programmateur 1a
  322.   EEPROM.get(8, IterationProg1a[0]);                                                                                    // Restaure l'itération du lundi du programmateur 1a
  323.   EEPROM.get(10, IterationProg1a[1]);                                                                                   // Restaure l'itération du mardi du programmateur 1a
  324.   EEPROM.get(12, IterationProg1a[2]);                                                                                   // Restaure l'itération du mercredi du programmateur 1a
  325.   EEPROM.get(14, IterationProg1a[3]);                                                                                   // Restaure l'itération du jeudi du programmateur 1a
  326.   EEPROM.get(16, IterationProg1a[4]);                                                                                   // Restaure l'itération du vendredi du programmateur 1a
  327.   EEPROM.get(18, IterationProg1a[5]);                                                                                   // Restaure l'itération du samedi du programmateur 1a
  328.   EEPROM.get(20, IterationProg1a[6]);                                                                                   // Restaure l'itération du dimanche du programmateur 1a
  329.   EEPROM.get(22, ModeProg1a);                                                                                           // Restaure le mode du programmateur 1a
  330.  
  331.   EEPROM.get(24, HrsDepartProg1b);                                                                                      // Restaure les heures de départ du programmateur 1b
  332.   EEPROM.get(26, MinsDepartProg1b);                                                                                     // Restaure les minutes de départ du programmateur 1b
  333.   EEPROM.get(28, HrsArretProg1b);                                                                                       // Restaure les heures d'arrêt du programmateur 1b
  334.   EEPROM.get(30, MinsArretProg1b);                                                                                      // Restaure les minutes d'arrêt du programmateur 1b
  335.   EEPROM.get(32, IterationProg1b[0]);                                                                                   // Restaure l'itération du lundi du programmateur 1b
  336.   EEPROM.get(34, IterationProg1b[1]);                                                                                   // Restaure l'itération du mardi du programmateur 1b
  337.   EEPROM.get(36, IterationProg1b[2]);                                                                                   // Restaure l'itération du mercredi du programmateur 1b
  338.   EEPROM.get(38, IterationProg1b[3]);                                                                                   // Restaure l'itération du jeudi du programmateur 1b
  339.   EEPROM.get(40, IterationProg1b[4]);                                                                                   // Restaure l'itération du vendredi du programmateur 1b
  340.   EEPROM.get(42, IterationProg1b[5]);                                                                                   // Restaure l'itération du samedi du programmateur 1b
  341.   EEPROM.get(44, IterationProg1b[6]);                                                                                   // Restaure l'itération du dimanche du programmateur 1b
  342.   EEPROM.get(46, ModeProg1b);                                                                                           // Restaure le mode du programmateur 1b
  343.  
  344.   EEPROM.get(48, HrsDepartProg1c);                                                                                      // Restaure les heures de départ du programmateur 1c
  345.   EEPROM.get(50, MinsDepartProg1c);                                                                                     // Restaure les minutes de départ du programmateur 1c
  346.   EEPROM.get(52, HrsArretProg1c);                                                                                       // Restaure les heures d'arrêt du programmateur 1c
  347.   EEPROM.get(54, MinsArretProg1c);                                                                                      // Restaure les minutes d'arrêt du programmateur 1c
  348.   EEPROM.get(56, IterationProg1c[0]);                                                                                   // Restaure l'itération du lundi du programmateur 1c
  349.   EEPROM.get(58, IterationProg1c[1]);                                                                                   // Restaure l'itération du mardi du programmateur 1c
  350.   EEPROM.get(60, IterationProg1c[2]);                                                                                   // Restaure l'itération du mercredi du programmateur 1c
  351.   EEPROM.get(62, IterationProg1c[3]);                                                                                   // Restaure l'itération du jeudi du programmateur 1c
  352.   EEPROM.get(64, IterationProg1c[4]);                                                                                   // Restaure l'itération du vendredi du programmateur 1c
  353.   EEPROM.get(66, IterationProg1c[5]);                                                                                   // Restaure l'itération du samedi du programmateur 1c
  354.   EEPROM.get(68, IterationProg1c[6]);                                                                                   // Restaure l'itération du dimanche du programmateur 1c
  355.   EEPROM.get(70, ModeProg1c);                                                                                           // Restaure le mode du programmateur 1c
  356.  
  357.   EEPROM.get(72, HrsDepartProg2a);                                                                                      // Restaure les heures de départ du programmateur 2a
  358.   EEPROM.get(74, MinsDepartProg2a);                                                                                     // Restaure les minutes de départ du programmateur 2a
  359.   EEPROM.get(76, HrsArretProg2a);                                                                                       // Restaure les heures d'arrêt du programmateur 2a
  360.   EEPROM.get(78, MinsArretProg2a);                                                                                      // Restaure les minutes d'arrêt du programmateur 2a
  361.   EEPROM.get(80, IterationProg2a[0]);                                                                                   // Restaure l'itération du lundi du programmateur 2a
  362.   EEPROM.get(82, IterationProg2a[1]);                                                                                   // Restaure l'itération du mardi du programmateur 2a
  363.   EEPROM.get(84, IterationProg2a[2]);                                                                                   // Restaure l'itération du mercredi du programmateur 2a
  364.   EEPROM.get(86, IterationProg2a[3]);                                                                                   // Restaure l'itération du jeudi du programmateur 2a
  365.   EEPROM.get(88, IterationProg2a[4]);                                                                                   // Restaure l'itération du vendredi du programmateur 2a
  366.   EEPROM.get(90, IterationProg2a[5]);                                                                                   // Restaure l'itération du samedi du programmateur 2a
  367.   EEPROM.get(92, IterationProg2a[6]);                                                                                   // Restaure l'itération du dimanche du programmateur 2a
  368.   EEPROM.get(94, ModeProg2a);                                                                                           // Restaure le mode du programmateur 2a
  369.  
  370.   EEPROM.get(96, HrsDepartProg2b);                                                                                      // Restaure les heures de départ du programmateur 2b
  371.   EEPROM.get(98, MinsDepartProg2b);                                                                                     // Restaure les minutes de départ du programmateur 2b
  372.   EEPROM.get(100, HrsArretProg2b);                                                                                      // Restaure les heures d'arrêt du programmateur 2b
  373.   EEPROM.get(102, MinsArretProg2b);                                                                                     // Restaure les minutes d'arrêt du programmateur 2b
  374.   EEPROM.get(104, IterationProg2b[0]);                                                                                  // Restaure l'itération du lundi du programmateur 2b
  375.   EEPROM.get(106, IterationProg2b[1]);                                                                                  // Restaure l'itération du mardi du programmateur 2b
  376.   EEPROM.get(108, IterationProg2b[2]);                                                                                  // Restaure l'itération du mercredi du programmateur 2b
  377.   EEPROM.get(110, IterationProg2b[3]);                                                                                  // Restaure l'itération du jeudi du programmateur 2b
  378.   EEPROM.get(112, IterationProg2b[4]);                                                                                  // Restaure l'itération du vendredi du programmateur 2b
  379.   EEPROM.get(114, IterationProg2b[5]);                                                                                  // Restaure l'itération du samedi du programmateur 2b
  380.   EEPROM.get(116, IterationProg2b[6]);                                                                                  // Restaure l'itération du dimanche du programmateur 2b
  381.   EEPROM.get(118, ModeProg2b);                                                                                          // Restaure le mode du programmateur 2b
  382.  
  383.   EEPROM.get(120, HrsDepartProg2c);                                                                                     // Restaure les heures de départ du programmateur 2c
  384.   EEPROM.get(122, MinsDepartProg2c);                                                                                    // Restaure les minutes de départ du programmateur 2c
  385.   EEPROM.get(124, HrsArretProg2c);                                                                                      // Restaure les heures d'arrêt du programmateur 2c
  386.   EEPROM.get(126, MinsArretProg2c);                                                                                     // Restaure les minutes d'arrêt du programmateur 2c
  387.   EEPROM.get(128, IterationProg2c[0]);                                                                                  // Restaure l'itération du lundi du programmateur 2c
  388.   EEPROM.get(130, IterationProg2c[1]);                                                                                  // Restaure l'itération du mardi du programmateur 2c
  389.   EEPROM.get(132, IterationProg2c[2]);                                                                                  // Restaure l'itération du mercredi du programmateur 2c
  390.   EEPROM.get(134, IterationProg2c[3]);                                                                                  // Restaure l'itération du jeudi du programmateur 2c
  391.   EEPROM.get(136, IterationProg2c[4]);                                                                                  // Restaure l'itération du vendredi du programmateur 2c
  392.   EEPROM.get(138, IterationProg2c[5]);                                                                                  // Restaure l'itération du samedi du programmateur 2c
  393.   EEPROM.get(140, IterationProg2c[6]);                                                                                  // Restaure l'itération du dimanche du programmateur 2c
  394.   EEPROM.get(142, ModeProg2c);                                                                                          // Restaure le mode du programmateur 2c
  395.  
  396.   dht.begin();                                                                                                          // Démarre la librairie du capteur DHT22
  397.  
  398.   rtc.begin(BrocheDS3234);                                                                                              // Initialisation de la librairie du module horloge DS3234
  399.   //rtc.setTime(0, 13, 23, 3, 10, 3, 20);                                                                                 // Réglage Heure / Date (Secs, Minutes, Heures, Jour de la semaine, Jour du mois, Mois, Année)
  400.  
  401.   tft.begin(9600);                                                                                                      // Initialise la communication avec l'écran TFT
  402.   tft.reset();                                                                                                          // Initialise l'écran TFT
  403.   g_identifier = tft.readID();                                                                                          // Lecture de l'identifiant de l'écran TFT
  404.   tft.begin(g_identifier);                                                                                              // Démarre la librairie de l'écran TFT
  405.  
  406.   tft.fillScreen(BLACK);                                                                                                // Initialise la couleur du fond d'écran
  407.   tft.setRotation(OrientationTFT);                                                                                      // Initialise le sens d'affichage de l'écran TFT
  408.  
  409.   delay(1000);                                                                                                          // Temporise 1 seconde
  410.   Buzzer(20, 0, 1);                                                                                                     // Active le buzzer 20ms
  411.  
  412. //**************************************************************************************************************************************************************************
  413. }
  414.  
  415. void loop()
  416. {
  417. //**************************************************************************************************************************************************************************
  418.   if (PageCourante == 0) // ******************************************************************************************* // Si la Page courante 0 est sélectionnée => Page principale
  419.   {
  420.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  421.     {
  422.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  423.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  424.       tft.setTextSize(2); tft.setCursor(26, 8); tft.print(F("*** PROGRAMMATEUR HORAIRE ***"));                          // Positionne et Affiche le texte
  425.      
  426.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  427.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  428.       tft.drawLine(5, 176, 394, 176, DARKRED);                                                                          // Trace une ligne rouge horizontale
  429.      
  430.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  431.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  432.       tft.drawCircle(10, 119, 22, WHITE);
  433.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  434.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  435.       tft.drawCircle(388, 119, 22, WHITE);
  436.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  437.      
  438.       tft.drawRoundRect(55, 42, 287, 76, 12, 0x3B0A);                                                                   // Affiche le cadre de l'heure courante
  439.       tft.drawRoundRect(53, 40, 291, 80, 12, 0x3B0A);
  440.      
  441.       tft.fillCircle(198, 100, 4, GREEN); tft.fillCircle(198, 82, 4, GREEN);                                            // Affiche les deux points ":" de l'heure
  442.      
  443.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  444.       tft.setTextSize(2);                                                                                               // Définit la taille
  445.       tft.setCursor(20, 188); tft.print(F("Min"));                                                                      // Positionne et Affiche le texte
  446.       tft.setCursor(342, 188); tft.print(F("Max"));                                                                     // Positionne et Affiche le texte
  447.      
  448.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  449.     }
  450.    
  451.     FonctionLectureDS3234();                                                                                            // Appelle la fonction de lecture de l'heure courante et de la date
  452.    
  453.     GestionTactile ();                                                                                                  // Appelle la fonction de gestion du mode tactile
  454.    
  455.     tft.setTextColor(GREEN, BLACK); tft.setTextSize(8);                                                                 // Définit le couleur et Positionne le texte
  456.     tft.setCursor(92, 50);                                                                                              // Définit la position
  457.     GestionTactile ();                                                                                                  // Appelle la fonction de gestion du mode tactile
  458.     if (Hrs < 10) {tft.print('0');} tft.print(Hrs);                                                                     // Affiche les heures
  459.     tft.setCursor(216, 50);                                                                                             // Définit la position
  460.     if (Mins < 10) {tft.print('0');} tft.print(Mins);                                                                   // Affiche les minutes
  461.    
  462.     GestionTactile ();                                                                                                  // Appelle la fonction de gestion du mode tactile
  463.    
  464.          if (JourSemaine == 1) {JDLS = (F("Dimanche"));} else if (JourSemaine == 2) {JDLS = (F("Lundi"));}              // Définit le jour de la semaine
  465.     else if (JourSemaine == 3) {JDLS = (F("Mardi"));}    else if (JourSemaine == 4) {JDLS = (F("Mercredi"));}
  466.     else if (JourSemaine == 5) {JDLS = (F("Jeudi"));}    else if (JourSemaine == 6) {JDLS = (F("Vendredi"));}
  467.     else if (JourSemaine == 7) {JDLS = (F("Samedi"));}
  468.          if (Mois == 1)  {MDLA = (F("JANVIER"));}   else if (Mois == 2)  {MDLA = (F("FEVRIER"));}                       // Définit le mois
  469.     else if (Mois == 3)  {MDLA = (F("MARS"));}      else if (Mois == 4)  {MDLA = (F("AVRIL"));}
  470.     else if (Mois == 5)  {MDLA = (F("MAI"));}       else if (Mois == 6)  {MDLA = (F("JUIN"));}
  471.     else if (Mois == 7)  {MDLA = (F("JUILLET"));}   else if (Mois == 8)  {MDLA = (F("AOUT"));}
  472.     else if (Mois == 9)  {MDLA = (F("SEPTEMBRE"));} else if (Mois == 10) {MDLA = (F("OCTOBRE"));}
  473.     else if (Mois == 11) {MDLA = (F("NOVEMBRE"));}  else if (Mois == 12) {MDLA = (F("DECEMBRE"));}
  474.    
  475.     GestionTactile ();                                                                                                  // Appelle la fonction de gestion du mode tactile
  476.    
  477.     tft.setTextColor(WHITE, BLACK);                                                                                     // Définit la couleur
  478.     tft.setTextSize(2);                                                                                                 // Définit la taille
  479.    
  480.     if (LastJour != Jour) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le jour du mois courant a changé
  481.     {
  482.       tft.fillRect(0, 142, 399, 14, BLACK);                                                                             // Efface la date
  483.       LastJour = Jour;                                                                                                  // Mémorise le dernier jour du mois
  484.     }
  485.    
  486.     int xpos = 0;                                                                                                       // Déclare les variables pour centrer la date courante
  487.     int longueur = 0;
  488.     longueur = JDLS.length();                                                                                           // Calcule la longueur de la date courante
  489.     longueur = longueur + MDLA.length();
  490.     longueur = longueur + 2 + 4 + 3;                                                                                    // Ajoute la longueur du jour du mois, de l'année et des espaces
  491.     longueur = longueur *12;
  492.     xpos = 399 - longueur;
  493.     xpos = int(xpos / 2.0);                                                                                             // Définit l'abscisse de la position de la date courante pour le centrage
  494.    
  495.     GestionTactile ();                                                                                                  // Appelle la fonction de gestion du mode tactile
  496.    
  497.     tft.setTextSize(2);                                                                                                 // Définit la taille du texte
  498.     tft.setCursor(xpos, 142); tft.print(JDLS);                                                                          // Positionne et Affiche le jour de la semaine
  499.     GestionTactile ();                                                                                                  // Appelle la fonction de gestion du mode tactile
  500.     tft.print(' '); tft.print(Jour);                                                                                    // Affiche un espace et le jour du mois
  501.     tft.print(' '); tft.print(MDLA);                                                                                    // Affiche un espace et le mois
  502.     tft.print(' '); tft.print("20"); tft.print(Annee);                                                                  // Affiche un espace, affiche "20" et affiche l'année
  503.    
  504.     GestionTactile ();                                                                                                  // Appelle la fonction de gestion du mode tactile
  505.    
  506.     temperatureCourante = dht.readTemperature();                                                                        // Relève la température courante
  507.     //Serial.println(temperatureCourante); // Débug
  508.     if (isnan(temperatureCourante)) {return;}                                                                           // Vérifie si la lecture de la température courante a échoué
  509.    
  510.     static int CompteurRelevesTemperature = 0;                                                                          // Déclare et Initialise les variables pour le calcul de la moyenne de la température
  511.     static float SommeRelevesTemperature = 0.0;
  512.    
  513.     CompteurRelevesTemperature++;                                                                                       // Incrémente le compteur des relevés de température
  514.     SommeRelevesTemperature = SommeRelevesTemperature + temperatureCourante;                                            // Calcule la somme des 50 relevés
  515.    
  516.     if (CompteurRelevesTemperature >= 50) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si 50 relevés ont été effectués
  517.     {
  518.       temperatureCourante = SommeRelevesTemperature / 50.0;                                                             // Calcule la moyenne des 50 relevés
  519.       //Serial.println(temperatureCourante, 1); // Débug
  520.       CompteurRelevesTemperature = 0; SommeRelevesTemperature = 0.0;                                                    // Réinitialisation des variables de calcul de la moyenne de la température
  521.          
  522.       GestionTactile ();                                                                                                // Appelle la fonction de gestion du mode tactile
  523.      
  524.       if (LasttemperatureCourante != temperatureCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la température courante a changé
  525.       {
  526.              if (temperatureCourante < 0) {temperatureCourante = 0.0;}                                                  // Borne la température courante
  527.         else if (temperatureCourante > 80) {temperatureCourante = 80.0;}
  528.        
  529.         tft.setTextColor(WHITE, BLACK);                                                                                 // Définit la couleur
  530.         tft.setTextSize(4);                                                                                             // Définit la taile
  531.         GestionTactile ();                                                                                              // Appelle la fonction de gestion du mode tactile
  532.              if (temperatureCourante >= 10) {tft.setCursor(146, 194); tft.print(temperatureCourante, 1);}               // Positionne et Affiche la température courante
  533.         else if (temperatureCourante >= 0 && temperatureCourante < 10){tft.setCursor(146, 194); tft.print(' '); tft.print(temperatureCourante, 1);}
  534.         tft.setTextSize(2); tft.print((char)247);                                                                       // Affiche le symbole degré
  535.        
  536.         if (temperatureCourante > MaxTemp || MaxTemp == -1) {MaxTemp = temperatureCourante;}                            // Mémorise la température Max
  537.         if (temperatureCourante < MinTemp || MinTemp == -1) {MinTemp = temperatureCourante;}                            // Mémorise la température Min
  538.        
  539.         LasttemperatureCourante = temperatureCourante;                                                                  // Mémorise la dernière valeur de la température courante
  540.       }
  541.     }
  542.     else if (LasttemperatureCourante == -1) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si LasttemperatureCourante est égale à -1
  543.     {
  544.       temperatureCourante = dht.readTemperature();                                                                      // Relève la température courante
  545.       //Serial.println(temperatureCourante); // Débug
  546.       if (isnan(temperatureCourante)) {return;}                                                                         // Vérifie si la lecture de la température courante a échoué
  547.      
  548.            if (temperatureCourante < 0) {temperatureCourante = 0.0;}                                                    // Borne la température courante
  549.       else if (temperatureCourante > 80) {temperatureCourante = 80.0;}
  550.      
  551.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  552.       tft.setTextSize(4);                                                                                               // Définit la taile
  553.       GestionTactile ();                                                                                                // Appelle la fonction de gestion du mode tactile
  554.            if (temperatureCourante >= 10) {tft.setCursor(146, 194); tft.print(temperatureCourante, 1);}                 // Positionne et Affiche la température courante
  555.       else if (temperatureCourante >= 0 && temperatureCourante < 10){tft.setCursor(140, 194); tft.print(' '); tft.print(temperatureCourante, 1);}
  556.       tft.setTextSize(2); tft.print((char)247);                                                                         // Affiche le symbole degré
  557.      
  558.       LasttemperatureCourante = temperatureCourante;                                                                    // Mémorise la dernière valeur de la température courante
  559.     }
  560.    
  561.     if (LastMaxTemp != MaxTemp || LastMinTemp != MinTemp || MaxTemp == -1 || MinTemp == -1) // ++++++++++++++++++++++++ // Si la température courante Min ou Max a changé
  562.     {
  563.       if (LastJourSemaine != JourSemaine) // -------------------------------------------------------------------------- // Réinitialise les températures Min et Max tous les jours à minuit
  564.       {
  565.         MaxTemp = temperatureCourante; MinTemp = temperatureCourante;
  566.         LastJourSemaine = JourSemaine;                                                                                  // Mémorise le dernier jour de la semaine
  567.       }
  568.      
  569.       tft.setTextSize(2);                                                                                               // Définit la taille
  570.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  571.       tft.setCursor(12, 214); tft.print(MinTemp, 1); tft.print((char)247);                                              // Positionne et Affiche la température Min
  572.       tft.setTextColor(RED, BLACK);                                                                                     // Définit la couleur
  573.       tft.setCursor(334, 214); tft.print(MaxTemp, 1); tft.print((char)247);                                             // Positionne et Affiche la température Max
  574.      
  575.       LastMaxTemp = MaxTemp;                                                                                            // Mémorise la dernière température Max
  576.       LastMinTemp = MinTemp;                                                                                            // Mémorise la dernière température Min
  577.     }
  578.   }
  579.  
  580. //**************************************************************************************************************************************************************************
  581.   else if (PageCourante == 10) // ************************************************************************************* // Si la Page courante 10 est sélectionnée => Prog 1a
  582.   {
  583.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  584.     {
  585.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  586.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  587.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 1a (D24)"));                                 // Positionne et Affiche le texte
  588.      
  589.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  590.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  591.      
  592.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  593.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  594.       tft.drawCircle(10, 119, 22, WHITE);
  595.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  596.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  597.       tft.drawCircle(388, 119, 22, WHITE);
  598.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  599.      
  600.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  601.       tft.drawCircle(10, 224, 22, WHITE);
  602.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  603.       tft.drawLine(16, 230, 10, 218, BLACK);
  604.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  605.       tft.drawCircle(388, 224, 22, WHITE);
  606.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  607.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  608.      
  609.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  610.       tft.setTextColor(WHITE); tft.setTextSize(2);
  611.       tft.setCursor(384, 2); tft.print('X');
  612.      
  613.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  614.       tft.setTextSize(3);                                                                                               // Définit la taille
  615.       tft.setCursor(55, 46); tft.print(F("DEPART1:"));                                                                  // Positionne et Affiche le texte
  616.       tft.setCursor(55, 94); tft.print(F("ARRET1 :"));                                                                  // Positionne et Affiche le texte
  617.      
  618.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  619.     }
  620.  
  621.     if (LastAffichageHeuresProg1a != AffichageHeuresProg1a) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si les heures de départ ou d'arrêt du programmateur 1a ont changé
  622.     {
  623.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  624.       tft.setTextSize(4);                                                                                               // Définit la taille
  625.       tft.setCursor(220, 42); if (HrsDepartProg1a < 10) {tft.print('0');} tft.print(HrsDepartProg1a);                   // Positionne et Affiche le texte
  626.       tft.setCursor(272, 42); tft.print(':');                                                                           // Positionne et Affiche le texte
  627.       tft.setCursor(300, 42); if (MinsDepartProg1a < 10) {tft.print('0');} tft.print(MinsDepartProg1a);                 // Positionne et Affiche le texte
  628.       tft.setCursor(220, 90); if (HrsArretProg1a < 10) {tft.print('0');} tft.print(HrsArretProg1a);                     // Positionne et Affiche le texte
  629.       tft.setCursor(272, 90); tft.print(':');                                                                           // Positionne et Affiche le texte
  630.       tft.setCursor(300, 90); if (MinsArretProg1a < 10) {tft.print('0');} tft.print(MinsArretProg1a);                   // Positionne et Affiche le texte
  631.  
  632.       LastAffichageHeuresProg1a = AffichageHeuresProg1a;                                                                // Mémorise le dernier indicateur courant de changement d'heure du programmateur 1a
  633.     }
  634.    
  635.     if (LastAffichageIterationProg1a != AffichageIterationProg1a) // ++++++++++++++++++++++++++++++++++++++++++++++++++ // Si l'itération du programmateur 1a a changé
  636.     {
  637.       uint16_t coul;                                                                                                    // Déclarare la variable couleur des touches
  638.      
  639.       tft.setTextSize(2);                                                                                               // Définit la taille
  640.       tft.setTextColor(WHITE);                                                                                          // Définit la couleur
  641.      
  642.       if (IterationProg1a[0] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  643.       tft.fillCircle(49, 155, 16, coul);                                                                                // Dessine la Touche Dimanche "D"
  644.       tft.drawCircle(49, 155, 20, coul);
  645.       tft.setCursor(45, 148); tft.print('D');                                                                           // Positionne et Affiche le texte
  646.      
  647.       if (IterationProg1a[1] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  648.       tft.fillCircle(99, 155, 16, coul);                                                                                // Dessine la Touche Lundi "L"
  649.       tft.drawCircle(99, 155, 20, coul);
  650.       tft.setCursor(95, 148); tft.print('L');                                                                           // Positionne et Affiche le texte
  651.      
  652.       if (IterationProg1a[2] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  653.       tft.fillCircle(149, 155, 16, coul);                                                                               // Dessine la Touche Mardi "M"
  654.       tft.drawCircle(149, 155, 20, coul);
  655.       tft.setCursor(145, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  656.      
  657.       if (IterationProg1a[3] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  658.       tft.fillCircle(199, 155, 16, coul);                                                                               // Dessine la Touche Mercredi "M"
  659.       tft.drawCircle(199, 155, 20, coul);
  660.       tft.setCursor(195, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  661.      
  662.       if (IterationProg1a[4] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  663.       tft.fillCircle(249, 155, 16, coul);                                                                               // Dessine la Touche Jeudi "J"
  664.       tft.drawCircle(249, 155, 20, coul);
  665.       tft.setCursor(245, 148); tft.print('J');                                                                          // Positionne et Affiche le texte
  666.      
  667.       if (IterationProg1a[5] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  668.       tft.fillCircle(299, 155, 16, coul);                                                                               // Dessine la Touche Vendredi "V"
  669.       tft.drawCircle(299, 155, 20, coul);
  670.       tft.setCursor(295, 148); tft.print('V');                                                                          // Positionne et Affiche le texte
  671.      
  672.       if (IterationProg1a[6] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  673.       tft.fillCircle(349, 155, 16, coul);                                                                               // Dessine la Touche Samedi "S"
  674.       tft.drawCircle(349, 155, 20, coul);
  675.       tft.setCursor(345, 148); tft.print('S');                                                                          // Positionne et Affiche le texte
  676.      
  677.       LastAffichageIterationProg1a = AffichageIterationProg1a;                                                          // Mémorise le dernier indicateur courant de changement de l'itération du programmateur 1a
  678.     }
  679.  
  680.     if (LastModeProg1a != ModeProg1a) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant du programmateur 1a a changé
  681.     {
  682.       tft.setTextColor(RED);                                                                                            // Affiche ON, AUTO, OFF
  683.       tft.setTextSize(3);                                                                                               // Définit la taille
  684.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(160, 198); tft.print(F("AUTO")); tft.setCursor(265, 198); tft.print(F("OFF"));
  685.            if (ModeProg1a == 2) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface les deux autres
  686.       else if (ModeProg1a == 1) {tft.drawRect(151, 188, 87, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "AUTO" et Efface les deux autres
  687.       else if (ModeProg1a == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface les deux autres
  688.      
  689.       LastModeProg1a = ModeProg1a;                                                                                      // Mémorise le dernier le mode de fonctionnement courant du programmateur 1a
  690.     }
  691.   }
  692.  
  693. //**************************************************************************************************************************************************************************
  694.   else if (PageCourante == 11) // ************************************************************************************* // Si la Page courante 11 est sélectionnée => Prog 1b
  695.   {
  696.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  697.     {
  698.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  699.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  700.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 1b (D24)"));                                 // Positionne et Affiche le texte
  701.      
  702.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  703.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  704.      
  705.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  706.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  707.       tft.drawCircle(10, 119, 22, WHITE);
  708.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  709.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  710.       tft.drawCircle(388, 119, 22, WHITE);
  711.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  712.      
  713.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  714.       tft.drawCircle(10, 224, 22, WHITE);
  715.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  716.       tft.drawLine(16, 230, 10, 218, BLACK);
  717.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  718.       tft.drawCircle(388, 224, 22, WHITE);
  719.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  720.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  721.      
  722.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  723.       tft.setTextColor(WHITE); tft.setTextSize(2);
  724.       tft.setCursor(384, 2); tft.print('X');
  725.      
  726.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  727.       tft.setTextSize(3);                                                                                               // Définit la taille
  728.       tft.setCursor(55, 46); tft.print(F("DEPART2:"));                                                                  // Positionne et Affiche le texte
  729.       tft.setCursor(55, 94); tft.print(F("ARRET2 :"));                                                                  // Positionne et Affiche le texte
  730.      
  731.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  732.     }
  733.  
  734.     if (LastAffichageHeuresProg1b != AffichageHeuresProg1b) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si les heures de départ ou d'arrêt du programmateur 1b ont changé
  735.     {
  736.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  737.       tft.setTextSize(4);                                                                                               // Définit la taille
  738.       tft.setCursor(220, 42); if (HrsDepartProg1b < 10) {tft.print('0');} tft.print(HrsDepartProg1b);                   // Positionne et Affiche le texte
  739.       tft.setCursor(272, 42); tft.print(':');                                                                           // Positionne et Affiche le texte
  740.       tft.setCursor(300, 42); if (MinsDepartProg1b < 10) {tft.print('0');} tft.print(MinsDepartProg1b);                 // Positionne et Affiche le texte
  741.       tft.setCursor(220, 90); if (HrsArretProg1b < 10) {tft.print('0');} tft.print(HrsArretProg1b);                     // Positionne et Affiche le texte
  742.       tft.setCursor(272, 90); tft.print(':');                                                                           // Positionne et Affiche le texte
  743.       tft.setCursor(300, 90); if (MinsArretProg1b < 10) {tft.print('0');} tft.print(MinsArretProg1b);                   // Positionne et Affiche le texte
  744.  
  745.       LastAffichageHeuresProg1b = AffichageHeuresProg1b;                                                                // Mémorise le dernier indicateur courant de changement d'heure du programmateur 1b
  746.     }
  747.    
  748.     if (LastAffichageIterationProg1b != AffichageIterationProg1b) // ++++++++++++++++++++++++++++++++++++++++++++++++++ // Si l'itération du programmateur 1b a changé
  749.     {
  750.       uint16_t coul;                                                                                                    // Déclarare la variable couleur des touches
  751.      
  752.       tft.setTextSize(2);                                                                                               // Définit la taille
  753.       tft.setTextColor(WHITE);                                                                                          // Définit la couleur
  754.      
  755.       if (IterationProg1b[0] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  756.       tft.fillCircle(49, 155, 16, coul);                                                                                // Dessine la Touche Dimanche "D"
  757.       tft.drawCircle(49, 155, 20, coul);
  758.       tft.setCursor(45, 148); tft.print('D');                                                                           // Positionne et Affiche le texte
  759.      
  760.       if (IterationProg1b[1] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  761.       tft.fillCircle(99, 155, 16, coul);                                                                                // Dessine la Touche Lundi "L"
  762.       tft.drawCircle(99, 155, 20, coul);
  763.       tft.setCursor(95, 148); tft.print('L');                                                                           // Positionne et Affiche le texte
  764.      
  765.       if (IterationProg1b[2] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  766.       tft.fillCircle(149, 155, 16, coul);                                                                               // Dessine la Touche Mardi "M"
  767.       tft.drawCircle(149, 155, 20, coul);
  768.       tft.setCursor(145, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  769.      
  770.       if (IterationProg1b[3] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  771.       tft.fillCircle(199, 155, 16, coul);                                                                               // Dessine la Touche Mercredi "M"
  772.       tft.drawCircle(199, 155, 20, coul);
  773.       tft.setCursor(195, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  774.      
  775.       if (IterationProg1b[4] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  776.       tft.fillCircle(249, 155, 16, coul);                                                                               // Dessine la Touche Jeudi "J"
  777.       tft.drawCircle(249, 155, 20, coul);
  778.       tft.setCursor(245, 148); tft.print('J');                                                                          // Positionne et Affiche le texte
  779.      
  780.       if (IterationProg1b[5] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  781.       tft.fillCircle(299, 155, 16, coul);                                                                               // Dessine la Touche Vendredi "V"
  782.       tft.drawCircle(299, 155, 20, coul);
  783.       tft.setCursor(295, 148); tft.print('V');                                                                          // Positionne et Affiche le texte
  784.      
  785.       if (IterationProg1b[6] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  786.       tft.fillCircle(349, 155, 16, coul);                                                                               // Dessine la Touche Samedi "S"
  787.       tft.drawCircle(349, 155, 20, coul);
  788.       tft.setCursor(345, 148); tft.print('S');                                                                          // Positionne et Affiche le texte
  789.      
  790.       LastAffichageIterationProg1b = AffichageIterationProg1b;                                                          // Mémorise le dernier indicateur courant de changement de l'itération du programmateur 1b
  791.     }
  792.  
  793.     if (LastModeProg1b != ModeProg1b) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant du programmateur 1b a changé
  794.     {
  795.       tft.setTextColor(RED);                                                                                            // Affiche ON, AUTO, OFF
  796.       tft.setTextSize(3);                                                                                               // Définit la taille
  797.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(160, 198); tft.print(F("AUTO")); tft.setCursor(265, 198); tft.print(F("OFF"));
  798.            if (ModeProg1b == 2) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface les deux autres
  799.       else if (ModeProg1b == 1) {tft.drawRect(151, 188, 87, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "AUTO" et Efface les deux autres
  800.       else if (ModeProg1b == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface les deux autres
  801.      
  802.       LastModeProg1b = ModeProg1b;                                                                                      // Mémorise le dernier le mode de fonctionnement courant du programmateur 1b
  803.     }
  804.   }
  805.  
  806. //**************************************************************************************************************************************************************************
  807.   else if (PageCourante == 12) // ************************************************************************************* // Si la Page courante 12 est sélectionnée => Prog 1c
  808.   {
  809.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  810.     {
  811.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  812.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  813.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 1c (D24)"));                                 // Positionne et Affiche le texte
  814.      
  815.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  816.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  817.      
  818.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  819.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  820.       tft.drawCircle(10, 119, 22, WHITE);
  821.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  822.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  823.       tft.drawCircle(388, 119, 22, WHITE);
  824.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  825.      
  826.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  827.       tft.drawCircle(10, 224, 22, WHITE);
  828.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  829.       tft.drawLine(16, 230, 10, 218, BLACK);
  830.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  831.       tft.drawCircle(388, 224, 22, WHITE);
  832.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  833.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  834.      
  835.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  836.       tft.setTextColor(WHITE); tft.setTextSize(2);
  837.       tft.setCursor(384, 2); tft.print('X');
  838.      
  839.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  840.       tft.setTextSize(3);                                                                                               // Définit la taille
  841.       tft.setCursor(55, 46); tft.print(F("DEPART3:"));                                                                  // Positionne et Affiche le texte
  842.       tft.setCursor(55, 94); tft.print(F("ARRET3 :"));                                                                  // Positionne et Affiche le texte
  843.      
  844.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  845.     }
  846.  
  847.     if (LastAffichageHeuresProg1c != AffichageHeuresProg1c) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si les heures de départ ou d'arrêt du programmateur 1c ont changé
  848.     {
  849.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  850.       tft.setTextSize(4);                                                                                               // Définit la taille
  851.       tft.setCursor(220, 42); if (HrsDepartProg1c < 10) {tft.print('0');} tft.print(HrsDepartProg1c);                   // Positionne et Affiche le texte
  852.       tft.setCursor(272, 42); tft.print(':');                                                                           // Positionne et Affiche le texte
  853.       tft.setCursor(300, 42); if (MinsDepartProg1c < 10) {tft.print('0');} tft.print(MinsDepartProg1c);                 // Positionne et Affiche le texte
  854.       tft.setCursor(220, 90); if (HrsArretProg1c < 10) {tft.print('0');} tft.print(HrsArretProg1c);                     // Positionne et Affiche le texte
  855.       tft.setCursor(272, 90); tft.print(':');                                                                           // Positionne et Affiche le texte
  856.       tft.setCursor(300, 90); if (MinsArretProg1c < 10) {tft.print('0');} tft.print(MinsArretProg1c);                   // Positionne et Affiche le texte
  857.  
  858.       LastAffichageHeuresProg1c = AffichageHeuresProg1c;                                                                // Mémorise le dernier indicateur courant de changement d'heure du programmateur 1c
  859.     }
  860.    
  861.     if (LastAffichageIterationProg1c != AffichageIterationProg1c) // ++++++++++++++++++++++++++++++++++++++++++++++++++ // Si l'itération du programmateur 1c a changé
  862.     {
  863.       uint16_t coul;                                                                                                    // Déclarare la variable couleur des touches
  864.      
  865.       tft.setTextSize(2);                                                                                               // Définit la taille
  866.       tft.setTextColor(WHITE);                                                                                          // Définit la couleur
  867.      
  868.       if (IterationProg1c[0] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  869.       tft.fillCircle(49, 155, 16, coul);                                                                                // Dessine la Touche Dimanche "D"
  870.       tft.drawCircle(49, 155, 20, coul);
  871.       tft.setCursor(45, 148); tft.print('D');                                                                           // Positionne et Affiche le texte
  872.      
  873.       if (IterationProg1c[1] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  874.       tft.fillCircle(99, 155, 16, coul);                                                                                // Dessine la Touche Lundi "L"
  875.       tft.drawCircle(99, 155, 20, coul);
  876.       tft.setCursor(95, 148); tft.print('L');                                                                           // Positionne et Affiche le texte
  877.      
  878.       if (IterationProg1c[2] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  879.       tft.fillCircle(149, 155, 16, coul);                                                                               // Dessine la Touche Mardi "M"
  880.       tft.drawCircle(149, 155, 20, coul);
  881.       tft.setCursor(145, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  882.      
  883.       if (IterationProg1c[3] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  884.       tft.fillCircle(199, 155, 16, coul);                                                                               // Dessine la Touche Mercredi "M"
  885.       tft.drawCircle(199, 155, 20, coul);
  886.       tft.setCursor(195, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  887.      
  888.       if (IterationProg1c[4] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  889.       tft.fillCircle(249, 155, 16, coul);                                                                               // Dessine la Touche Jeudi "J"
  890.       tft.drawCircle(249, 155, 20, coul);
  891.       tft.setCursor(245, 148); tft.print('J');                                                                          // Positionne et Affiche le texte
  892.      
  893.       if (IterationProg1c[5] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  894.       tft.fillCircle(299, 155, 16, coul);                                                                               // Dessine la Touche Vendredi "V"
  895.       tft.drawCircle(299, 155, 20, coul);
  896.       tft.setCursor(295, 148); tft.print('V');                                                                          // Positionne et Affiche le texte
  897.      
  898.       if (IterationProg1c[6] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  899.       tft.fillCircle(349, 155, 16, coul);                                                                               // Dessine la Touche Samedi "S"
  900.       tft.drawCircle(349, 155, 20, coul);
  901.       tft.setCursor(345, 148); tft.print('S');                                                                          // Positionne et Affiche le texte
  902.      
  903.       LastAffichageIterationProg1c = AffichageIterationProg1c;                                                          // Mémorise le dernier indicateur courant de changement de l'itération du programmateur 1c
  904.     }
  905.  
  906.     if (LastModeProg1c != ModeProg1c) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant du programmateur 1c a changé
  907.     {
  908.       tft.setTextColor(RED);                                                                                            // Affiche ON, AUTO, OFF
  909.       tft.setTextSize(3);                                                                                               // Définit la taille
  910.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(160, 198); tft.print(F("AUTO")); tft.setCursor(265, 198); tft.print(F("OFF"));
  911.            if (ModeProg1c == 2) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface les deux autres
  912.       else if (ModeProg1c == 1) {tft.drawRect(151, 188, 87, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "AUTO" et Efface les deux autres
  913.       else if (ModeProg1c == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface les deux autres
  914.      
  915.       LastModeProg1c = ModeProg1c;                                                                                      // Mémorise le dernier le mode de fonctionnement courant du programmateur 1c
  916.     }
  917.   }
  918.  
  919. //**************************************************************************************************************************************************************************
  920.   else if (PageCourante == 13) // ************************************************************************************* // Si la Page courante 13 est sélectionnée => Minuterie Prog 1
  921.   {
  922.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  923.     {
  924.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  925.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  926.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("MINUTERIE Prog 1 (D24)"));                                 // Positionne et Affiche le texte
  927.      
  928.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  929.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  930.      
  931.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  932.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  933.       tft.drawCircle(10, 119, 22, WHITE);
  934.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  935.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  936.       tft.drawCircle(388, 119, 22, WHITE);
  937.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  938.      
  939.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  940.       tft.drawCircle(10, 224, 22, WHITE);
  941.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  942.       tft.drawLine(16, 230, 10, 218, BLACK);
  943.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  944.       tft.drawCircle(388, 224, 22, WHITE);
  945.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  946.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  947.      
  948.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  949.       tft.setTextColor(WHITE); tft.setTextSize(2);
  950.       tft.setCursor(384, 2); tft.print('X');
  951.  
  952.       tft.drawRoundRect(55, 42, 287, 76, 12, 0x3B0A);                                                                   // Affiche le cadre de l'heure courante
  953.       tft.drawRoundRect(53, 40, 291, 80, 12, 0x3B0A);
  954.      
  955.       tft.fillCircle(198, 100, 4, BLUE); tft.fillCircle(198, 82, 4, BLUE);                                              // Affiche les deux points ":" de l'heure
  956.      
  957.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  958.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et - et les cadres
  959.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('-');
  960.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  961.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('-');
  962.      
  963.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  964.     }
  965.    
  966.     // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si les heures ou les minutes de réglages de la minuterie 1 ont changé
  967.     if (LastHrsReglagesMinuterie1 != HrsMinuterieReglageProg1 || LastMinsReglagesMinuterie1 != MinsMinuterieReglageProg1)
  968.     {
  969.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(8);                                                                // Définit le couleur et Positionne le texte
  970.       tft.setCursor(92, 50);                                                                                            // Définit la position
  971.       if (HrsMinuterieReglageProg1 < 10) {tft.print('0');} tft.print(HrsMinuterieReglageProg1);                         // Affiche les heures de réglages de la minuterie 1
  972.       tft.setCursor(216, 50);                                                                                           // Définit la position
  973.       if (MinsMinuterieReglageProg1 < 10) {tft.print('0');} tft.print(MinsMinuterieReglageProg1);                       // Affiche les minutes de réglages de la minuterie 1
  974.       LastHrsReglagesMinuterie1 = HrsMinuterieReglageProg1;                                                             // Mémorise dernières heures de réglages de la minuterie 1
  975.       LastMinsReglagesMinuterie1 = MinsMinuterieReglageProg1;                                                           // Mémorise dernières minutes de réglages de la minuterie 1
  976.     }
  977.  
  978.     if (LastModeMinuterieProg1 != ModeMinuterieProg1) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant de la minuterie 1
  979.     {
  980.       tft.setTextColor(RED);                                                                                            // Affiche ON, OFF
  981.       tft.setTextSize(3);                                                                                               // Définit la taille
  982.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(265, 198); tft.print(F("OFF"));
  983.            if (ModeMinuterieProg1 == 1) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface l'autre cadre
  984.       else if (ModeMinuterieProg1 == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface l'autre cadre
  985.      
  986.       LastModeMinuterieProg1 = ModeMinuterieProg1;                                                                      // Mémorise le dernier le mode de fonctionnement courant de la minuterie 1
  987.     }
  988.   }
  989.  
  990. //**************************************************************************************************************************************************************************
  991.   else if (PageCourante == 14) // ************************************************************************************* // Si la Page courante 14 est sélectionnée => Thermostat 1
  992.   {
  993.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  994.     {
  995.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  996.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  997.       tft.setTextSize(2); tft.setCursor(85, 8); tft.print(F("THERMOSTAT 1 (D24)"));                                     // Positionne et Affiche le texte
  998.      
  999.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1000.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1001.      
  1002.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  1003.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  1004.       tft.drawCircle(10, 119, 22, WHITE);
  1005.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  1006.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  1007.       tft.drawCircle(388, 119, 22, WHITE);
  1008.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  1009.      
  1010.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  1011.       tft.drawCircle(10, 224, 22, WHITE);
  1012.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  1013.       tft.drawLine(16, 230, 10, 218, BLACK);
  1014.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  1015.       tft.drawCircle(388, 224, 22, WHITE);
  1016.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  1017.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  1018.      
  1019.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  1020.       tft.setTextColor(WHITE); tft.setTextSize(2);
  1021.       tft.setCursor(384, 2); tft.print('X');
  1022.      
  1023.       tft.setTextColor(RED, BLACK);                                                                                     // Définit la couleur
  1024.       tft.setTextSize(2); tft.setCursor(130, 42); tft.print(F("TEMPERATURE"));                                          // Positionne et Affiche le texte
  1025.      
  1026.       tft.setTextColor(RED, BLACK);                                                                                     // Définit la couleur
  1027.       tft.setTextSize(2); tft.setCursor(135, 110); tft.print(F("THERMOSTAT"));                                          // Positionne et Affiche le texte
  1028.      
  1029.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1030.       tft.drawRect(73, 140, 25, 25, GREEN); tft.drawRect(288, 140, 25, 25, GREEN);                                      // Dessine les 2 boutons + et - et les cadres
  1031.       tft.setTextSize(2); tft.setCursor(81, 146); tft.print('+'); tft.setCursor(296, 146); tft.print('-');
  1032.      
  1033.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1034.     }
  1035.    
  1036.     if (LasttemperatureThermostat1 != temperatureThermostat1) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le thermostat 1 a changé
  1037.     {
  1038.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit le couleur et Positionne le texte
  1039.       tft.setTextSize(5);                                                                                               // Définit la taile
  1040.            if (temperatureThermostat1 >= 10) {tft.setCursor(132, 136); tft.print(temperatureThermostat1, 1);}           // Positionne et Affiche le thermostat 1
  1041.       else if (temperatureThermostat1 >= 0 && temperatureThermostat1 < 10){tft.setCursor(132, 136); tft.print(' '); tft.print(temperatureThermostat1, 1);}
  1042.       tft.setTextSize(2); tft.print((char)247);                                                                         // Affiche le symbole degré
  1043.       LasttemperatureThermostat1 = temperatureThermostat1;                                                              // Mémorise la dernière valeur du thermostat 1
  1044.     }
  1045.    
  1046.     if (LastModeThermostat1 != ModeThermostat1) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant du thermostat 1
  1047.     {
  1048.       tft.setTextColor(RED);                                                                                            // Affiche ON, OFF
  1049.       tft.setTextSize(3);                                                                                               // Définit la taille
  1050.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(265, 198); tft.print(F("OFF"));
  1051.            if (ModeThermostat1 == 1) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface l'autre cadre
  1052.       else if (ModeThermostat1 == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface l'autre cadre
  1053.      
  1054.       LastModeThermostat1 = ModeThermostat1;                                                                            // Mémorise le dernier le mode de fonctionnement courant du thermostat 1
  1055.     }
  1056.    
  1057.     temperatureCourante = dht.readTemperature();                                                                        // Relève la température courante
  1058.     //Serial.println(temperatureCourante); // Débug
  1059.     if (isnan(temperatureCourante)) {return;}                                                                           // Vérifie si la lecture de la température courante a échoué
  1060.    
  1061.     static int CompteurRelevesTemperature = 0;                                                                          // Déclare et Initialise les variables pour le calcul de la moyenne de la température
  1062.     static float SommeRelevesTemperature = 0.0;
  1063.    
  1064.     CompteurRelevesTemperature++;                                                                                       // Incrémente le compteur des relevés de température
  1065.     SommeRelevesTemperature = SommeRelevesTemperature + temperatureCourante;                                            // Calcule la somme des 50 relevés
  1066.    
  1067.     if (CompteurRelevesTemperature >= 100) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si 100 relevés ont été effectués
  1068.     {
  1069.       temperatureCourante = SommeRelevesTemperature / 100.0;                                                            // Calcule la moyenne des 100 relevés
  1070.       //Serial.println(temperatureCourante, 1); // Débug
  1071.       CompteurRelevesTemperature = 0; SommeRelevesTemperature = 0.0;                                                    // Réinitialisation des variables de calcul de la moyenne de la température
  1072.     }
  1073.    
  1074.     if (LastAffichageTemperatureModeThermostat1 != temperatureCourante) // ++++++++++++++++++++++++++++++++++++++++++++ // Si la température courante a changé
  1075.     {
  1076.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1077.       tft.setTextSize(3);                                                                                               // Définit la taile
  1078.            if (temperatureCourante >= 10) {tft.setCursor(152, 70); tft.print(temperatureCourante, 1);}                  // Positionne et Affiche la température courante
  1079.       else if (temperatureCourante >= 0 && temperatureCourante < 10){tft.setCursor(152, 70); tft.print(' '); tft.print(temperatureCourante, 1);}
  1080.       tft.setTextSize(2); tft.print((char)247);                                                                         // Affiche le symbole degré
  1081.       LastAffichageTemperatureModeThermostat1 = temperatureCourante;
  1082.     }
  1083.   }
  1084.  
  1085. //**************************************************************************************************************************************************************************
  1086.   else if (PageCourante == 20) // ************************************************************************************* // Si la Page courante 20 est sélectionnée => Prog 2a
  1087.   {
  1088.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1089.     {
  1090.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1091.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1092.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 2a (D25)"));                                 // Positionne et Affiche le texte
  1093.      
  1094.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1095.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1096.      
  1097.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  1098.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  1099.       tft.drawCircle(10, 119, 22, WHITE);
  1100.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  1101.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  1102.       tft.drawCircle(388, 119, 22, WHITE);
  1103.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  1104.      
  1105.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  1106.       tft.drawCircle(10, 224, 22, WHITE);
  1107.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  1108.       tft.drawLine(16, 230, 10, 218, BLACK);
  1109.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  1110.       tft.drawCircle(388, 224, 22, WHITE);
  1111.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  1112.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  1113.      
  1114.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  1115.       tft.setTextColor(WHITE); tft.setTextSize(2);
  1116.       tft.setCursor(384, 2); tft.print('X');
  1117.      
  1118.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1119.       tft.setTextSize(3);                                                                                               // Définit la taille
  1120.       tft.setCursor(55, 46); tft.print(F("DEPART1:"));                                                                  // Positionne et Affiche le texte
  1121.       tft.setCursor(55, 94); tft.print(F("ARRET1 :"));                                                                  // Positionne et Affiche le texte
  1122.      
  1123.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1124.     }
  1125.  
  1126.     if (LastAffichageHeuresProg2a != AffichageHeuresProg2a) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si les heures de départ ou d'arrêt du programmateur 2a ont changé
  1127.     {
  1128.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1129.       tft.setTextSize(4);                                                                                               // Définit la taille
  1130.       tft.setCursor(220, 42); if (HrsDepartProg2a < 10) {tft.print('0');} tft.print(HrsDepartProg2a);                   // Positionne et Affiche le texte
  1131.       tft.setCursor(272, 42); tft.print(':');                                                                           // Positionne et Affiche le texte
  1132.       tft.setCursor(300, 42); if (MinsDepartProg2a < 10) {tft.print('0');} tft.print(MinsDepartProg2a);                 // Positionne et Affiche le texte
  1133.       tft.setCursor(220, 90); if (HrsArretProg2a < 10) {tft.print('0');} tft.print(HrsArretProg2a);                     // Positionne et Affiche le texte
  1134.       tft.setCursor(272, 90); tft.print(':');                                                                           // Positionne et Affiche le texte
  1135.       tft.setCursor(300, 90); if (MinsArretProg2a < 10) {tft.print('0');} tft.print(MinsArretProg2a);                   // Positionne et Affiche le texte
  1136.  
  1137.       LastAffichageHeuresProg2a = AffichageHeuresProg2a;                                                                // Mémorise le dernier indicateur courant de changement d'heure du programmateur 2a
  1138.     }
  1139.    
  1140.     if (LastAffichageIterationProg2a != AffichageIterationProg2a) // ++++++++++++++++++++++++++++++++++++++++++++++++++ // Si l'itération du programmateur 2a a changé
  1141.     {
  1142.       uint16_t coul;                                                                                                    // Déclarare la variable couleur des touches
  1143.      
  1144.       tft.setTextSize(2);                                                                                               // Définit la taille
  1145.       tft.setTextColor(WHITE);                                                                                          // Définit la couleur
  1146.      
  1147.       if (IterationProg2a[0] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1148.       tft.fillCircle(49, 155, 16, coul);                                                                                // Dessine la Touche Dimanche "D"
  1149.       tft.drawCircle(49, 155, 20, coul);
  1150.       tft.setCursor(45, 148); tft.print('D');                                                                           // Positionne et Affiche le texte
  1151.      
  1152.       if (IterationProg2a[1] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1153.       tft.fillCircle(99, 155, 16, coul);                                                                                // Dessine la Touche Lundi "L"
  1154.       tft.drawCircle(99, 155, 20, coul);
  1155.       tft.setCursor(95, 148); tft.print('L');                                                                           // Positionne et Affiche le texte
  1156.      
  1157.       if (IterationProg2a[2] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1158.       tft.fillCircle(149, 155, 16, coul);                                                                               // Dessine la Touche Mardi "M"
  1159.       tft.drawCircle(149, 155, 20, coul);
  1160.       tft.setCursor(145, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  1161.      
  1162.       if (IterationProg2a[3] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1163.       tft.fillCircle(199, 155, 16, coul);                                                                               // Dessine la Touche Mercredi "M"
  1164.       tft.drawCircle(199, 155, 20, coul);
  1165.       tft.setCursor(195, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  1166.      
  1167.       if (IterationProg2a[4] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1168.       tft.fillCircle(249, 155, 16, coul);                                                                               // Dessine la Touche Jeudi "J"
  1169.       tft.drawCircle(249, 155, 20, coul);
  1170.       tft.setCursor(245, 148); tft.print('J');                                                                          // Positionne et Affiche le texte
  1171.      
  1172.       if (IterationProg2a[5] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1173.       tft.fillCircle(299, 155, 16, coul);                                                                               // Dessine la Touche Vendredi "V"
  1174.       tft.drawCircle(299, 155, 20, coul);
  1175.       tft.setCursor(295, 148); tft.print('V');                                                                          // Positionne et Affiche le texte
  1176.      
  1177.       if (IterationProg2a[6] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1178.       tft.fillCircle(349, 155, 16, coul);                                                                               // Dessine la Touche Samedi "S"
  1179.       tft.drawCircle(349, 155, 20, coul);
  1180.       tft.setCursor(345, 148); tft.print('S');                                                                          // Positionne et Affiche le texte
  1181.      
  1182.       LastAffichageIterationProg2a = AffichageIterationProg2a;                                                          // Mémorise le dernier indicateur courant de changement de l'itération du programmateur 2a
  1183.     }
  1184.  
  1185.     if (LastModeProg2a != ModeProg2a) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant du programmateur 2a a changé
  1186.     {
  1187.       tft.setTextColor(RED);                                                                                            // Affiche ON, AUTO, OFF
  1188.       tft.setTextSize(3);                                                                                               // Définit la taille
  1189.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(160, 198); tft.print(F("AUTO")); tft.setCursor(265, 198); tft.print(F("OFF"));
  1190.            if (ModeProg2a == 2) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface les deux autres
  1191.       else if (ModeProg2a == 1) {tft.drawRect(151, 188, 87, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "AUTO" et Efface les deux autres
  1192.       else if (ModeProg2a == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface les deux autres
  1193.      
  1194.       LastModeProg2a = ModeProg2a;                                                                                      // Mémorise le dernier le mode de fonctionnement courant du programmateur 2a
  1195.     }
  1196.   }
  1197.  
  1198. //**************************************************************************************************************************************************************************
  1199.   else if (PageCourante == 21) // ************************************************************************************* // Si la Page courante 21 est sélectionnée => Prog 2b
  1200.   {
  1201.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1202.     {
  1203.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1204.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1205.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 2b (D25)"));                                 // Positionne et Affiche le texte
  1206.      
  1207.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1208.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1209.      
  1210.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  1211.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  1212.       tft.drawCircle(10, 119, 22, WHITE);
  1213.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  1214.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  1215.       tft.drawCircle(388, 119, 22, WHITE);
  1216.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  1217.      
  1218.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  1219.       tft.drawCircle(10, 224, 22, WHITE);
  1220.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  1221.       tft.drawLine(16, 230, 10, 218, BLACK);
  1222.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  1223.       tft.drawCircle(388, 224, 22, WHITE);
  1224.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  1225.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  1226.      
  1227.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  1228.       tft.setTextColor(WHITE); tft.setTextSize(2);
  1229.       tft.setCursor(384, 2); tft.print('X');
  1230.      
  1231.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1232.       tft.setTextSize(3);                                                                                               // Définit la taille
  1233.       tft.setCursor(55, 46); tft.print(F("DEPART2:"));                                                                  // Positionne et Affiche le texte
  1234.       tft.setCursor(55, 94); tft.print(F("ARRET2 :"));                                                                  // Positionne et Affiche le texte
  1235.      
  1236.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1237.     }
  1238.  
  1239.     if (LastAffichageHeuresProg2b != AffichageHeuresProg2b) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si les heures de départ ou d'arrêt du programmateur 2b ont changé
  1240.     {
  1241.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1242.       tft.setTextSize(4);                                                                                               // Définit la taille
  1243.       tft.setCursor(220, 42); if (HrsDepartProg2b < 10) {tft.print('0');} tft.print(HrsDepartProg2b);                   // Positionne et Affiche le texte
  1244.       tft.setCursor(272, 42); tft.print(':');                                                                           // Positionne et Affiche le texte
  1245.       tft.setCursor(300, 42); if (MinsDepartProg2b < 10) {tft.print('0');} tft.print(MinsDepartProg2b);                 // Positionne et Affiche le texte
  1246.       tft.setCursor(220, 90); if (HrsArretProg2b < 10) {tft.print('0');} tft.print(HrsArretProg2b);                     // Positionne et Affiche le texte
  1247.       tft.setCursor(272, 90); tft.print(':');                                                                           // Positionne et Affiche le texte
  1248.       tft.setCursor(300, 90); if (MinsArretProg2b < 10) {tft.print('0');} tft.print(MinsArretProg2b);                   // Positionne et Affiche le texte
  1249.  
  1250.       LastAffichageHeuresProg2b = AffichageHeuresProg2b;                                                                // Mémorise le dernier indicateur courant de changement d'heure du programmateur 2b
  1251.     }
  1252.    
  1253.     if (LastAffichageIterationProg2b != AffichageIterationProg2b) // ++++++++++++++++++++++++++++++++++++++++++++++++++ // Si l'itération du programmateur 2b a changé
  1254.     {
  1255.       uint16_t coul;                                                                                                    // Déclarare la variable couleur des touches
  1256.      
  1257.       tft.setTextSize(2);                                                                                               // Définit la taille
  1258.       tft.setTextColor(WHITE);                                                                                          // Définit la couleur
  1259.      
  1260.       if (IterationProg2b[0] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1261.       tft.fillCircle(49, 155, 16, coul);                                                                                // Dessine la Touche Dimanche "D"
  1262.       tft.drawCircle(49, 155, 20, coul);
  1263.       tft.setCursor(45, 148); tft.print('D');                                                                           // Positionne et Affiche le texte
  1264.      
  1265.       if (IterationProg2b[1] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1266.       tft.fillCircle(99, 155, 16, coul);                                                                                // Dessine la Touche Lundi "L"
  1267.       tft.drawCircle(99, 155, 20, coul);
  1268.       tft.setCursor(95, 148); tft.print('L');                                                                           // Positionne et Affiche le texte
  1269.      
  1270.       if (IterationProg2b[2] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1271.       tft.fillCircle(149, 155, 16, coul);                                                                               // Dessine la Touche Mardi "M"
  1272.       tft.drawCircle(149, 155, 20, coul);
  1273.       tft.setCursor(145, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  1274.      
  1275.       if (IterationProg2b[3] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1276.       tft.fillCircle(199, 155, 16, coul);                                                                               // Dessine la Touche Mercredi "M"
  1277.       tft.drawCircle(199, 155, 20, coul);
  1278.       tft.setCursor(195, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  1279.      
  1280.       if (IterationProg2b[4] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1281.       tft.fillCircle(249, 155, 16, coul);                                                                               // Dessine la Touche Jeudi "J"
  1282.       tft.drawCircle(249, 155, 20, coul);
  1283.       tft.setCursor(245, 148); tft.print('J');                                                                          // Positionne et Affiche le texte
  1284.      
  1285.       if (IterationProg2b[5] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1286.       tft.fillCircle(299, 155, 16, coul);                                                                               // Dessine la Touche Vendredi "V"
  1287.       tft.drawCircle(299, 155, 20, coul);
  1288.       tft.setCursor(295, 148); tft.print('V');                                                                          // Positionne et Affiche le texte
  1289.      
  1290.       if (IterationProg2b[6] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1291.       tft.fillCircle(349, 155, 16, coul);                                                                               // Dessine la Touche Samedi "S"
  1292.       tft.drawCircle(349, 155, 20, coul);
  1293.       tft.setCursor(345, 148); tft.print('S');                                                                          // Positionne et Affiche le texte
  1294.      
  1295.       LastAffichageIterationProg2b = AffichageIterationProg2b;                                                          // Mémorise le dernier indicateur courant de changement de l'itération du programmateur 2b
  1296.     }
  1297.  
  1298.     if (LastModeProg2b != ModeProg2b) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant du programmateur 2b a changé
  1299.     {
  1300.       tft.setTextColor(RED);                                                                                            // Affiche ON, AUTO, OFF
  1301.       tft.setTextSize(3);                                                                                               // Définit la taille
  1302.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(160, 198); tft.print(F("AUTO")); tft.setCursor(265, 198); tft.print(F("OFF"));
  1303.            if (ModeProg2b == 2) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface les deux autres
  1304.       else if (ModeProg2b == 1) {tft.drawRect(151, 188, 87, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "AUTO" et Efface les deux autres
  1305.       else if (ModeProg2b == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface les deux autres
  1306.      
  1307.       LastModeProg2b = ModeProg2b;                                                                                      // Mémorise le dernier le mode de fonctionnement courant du programmateur 2b
  1308.     }
  1309.   }
  1310.  
  1311. //**************************************************************************************************************************************************************************
  1312.   else if (PageCourante == 22) // ************************************************************************************* // Si la Page courante 22 est sélectionnée => Prog 2c
  1313.   {
  1314.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1315.     {
  1316.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1317.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1318.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 2c (D25)"));                                 // Positionne et Affiche le texte
  1319.      
  1320.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1321.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1322.      
  1323.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  1324.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  1325.       tft.drawCircle(10, 119, 22, WHITE);
  1326.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  1327.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  1328.       tft.drawCircle(388, 119, 22, WHITE);
  1329.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  1330.      
  1331.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  1332.       tft.drawCircle(10, 224, 22, WHITE);
  1333.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  1334.       tft.drawLine(16, 230, 10, 218, BLACK);
  1335.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  1336.       tft.drawCircle(388, 224, 22, WHITE);
  1337.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  1338.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  1339.      
  1340.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  1341.       tft.setTextColor(WHITE); tft.setTextSize(2);
  1342.       tft.setCursor(384, 2); tft.print('X');
  1343.      
  1344.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1345.       tft.setTextSize(3);                                                                                               // Définit la taille
  1346.       tft.setCursor(55, 46); tft.print(F("DEPART3:"));                                                                  // Positionne et Affiche le texte
  1347.       tft.setCursor(55, 94); tft.print(F("ARRET3 :"));                                                                  // Positionne et Affiche le texte
  1348.      
  1349.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1350.     }
  1351.  
  1352.     if (LastAffichageHeuresProg2c != AffichageHeuresProg2c) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si les heures de départ ou d'arrêt du programmateur 2c ont changé
  1353.     {
  1354.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1355.       tft.setTextSize(4);                                                                                               // Définit la taille
  1356.       tft.setCursor(220, 42); if (HrsDepartProg2c < 10) {tft.print('0');} tft.print(HrsDepartProg2c);                   // Positionne et Affiche le texte
  1357.       tft.setCursor(272, 42); tft.print(':');                                                                           // Positionne et Affiche le texte
  1358.       tft.setCursor(300, 42); if (MinsDepartProg2c < 10) {tft.print('0');} tft.print(MinsDepartProg2c);                 // Positionne et Affiche le texte
  1359.       tft.setCursor(220, 90); if (HrsArretProg2c < 10) {tft.print('0');} tft.print(HrsArretProg2c);                     // Positionne et Affiche le texte
  1360.       tft.setCursor(272, 90); tft.print(':');                                                                           // Positionne et Affiche le texte
  1361.       tft.setCursor(300, 90); if (MinsArretProg2c < 10) {tft.print('0');} tft.print(MinsArretProg2c);                   // Positionne et Affiche le texte
  1362.  
  1363.       LastAffichageHeuresProg2c = AffichageHeuresProg2c;                                                                // Mémorise le dernier indicateur courant de changement d'heure du programmateur 2c
  1364.     }
  1365.    
  1366.     if (LastAffichageIterationProg2c != AffichageIterationProg2c) // ++++++++++++++++++++++++++++++++++++++++++++++++++ // Si l'itération du programmateur 2c a changé
  1367.     {
  1368.       uint16_t coul;                                                                                                    // Déclarare la variable couleur des touches
  1369.      
  1370.       tft.setTextSize(2);                                                                                               // Définit la taille
  1371.       tft.setTextColor(WHITE);                                                                                          // Définit la couleur
  1372.      
  1373.       if (IterationProg2c[0] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1374.       tft.fillCircle(49, 155, 16, coul);                                                                                // Dessine la Touche Dimanche "D"
  1375.       tft.drawCircle(49, 155, 20, coul);
  1376.       tft.setCursor(45, 148); tft.print('D');                                                                           // Positionne et Affiche le texte
  1377.      
  1378.       if (IterationProg2c[1] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1379.       tft.fillCircle(99, 155, 16, coul);                                                                                // Dessine la Touche Lundi "L"
  1380.       tft.drawCircle(99, 155, 20, coul);
  1381.       tft.setCursor(95, 148); tft.print('L');                                                                           // Positionne et Affiche le texte
  1382.      
  1383.       if (IterationProg2c[2] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1384.       tft.fillCircle(149, 155, 16, coul);                                                                               // Dessine la Touche Mardi "M"
  1385.       tft.drawCircle(149, 155, 20, coul);
  1386.       tft.setCursor(145, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  1387.      
  1388.       if (IterationProg2c[3] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1389.       tft.fillCircle(199, 155, 16, coul);                                                                               // Dessine la Touche Mercredi "M"
  1390.       tft.drawCircle(199, 155, 20, coul);
  1391.       tft.setCursor(195, 148); tft.print('M');                                                                          // Positionne et Affiche le texte
  1392.      
  1393.       if (IterationProg2c[4] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1394.       tft.fillCircle(249, 155, 16, coul);                                                                               // Dessine la Touche Jeudi "J"
  1395.       tft.drawCircle(249, 155, 20, coul);
  1396.       tft.setCursor(245, 148); tft.print('J');                                                                          // Positionne et Affiche le texte
  1397.      
  1398.       if (IterationProg2c[5] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1399.       tft.fillCircle(299, 155, 16, coul);                                                                               // Dessine la Touche Vendredi "V"
  1400.       tft.drawCircle(299, 155, 20, coul);
  1401.       tft.setCursor(295, 148); tft.print('V');                                                                          // Positionne et Affiche le texte
  1402.      
  1403.       if (IterationProg2c[6] == 0) {coul = RED;} else {coul = 0x195B62;}                                                // Sélectionne la couleur
  1404.       tft.fillCircle(349, 155, 16, coul);                                                                               // Dessine la Touche Samedi "S"
  1405.       tft.drawCircle(349, 155, 20, coul);
  1406.       tft.setCursor(345, 148); tft.print('S');                                                                          // Positionne et Affiche le texte
  1407.      
  1408.       LastAffichageIterationProg2c = AffichageIterationProg2c;                                                          // Mémorise le dernier indicateur courant de changement de l'itération du programmateur 2c
  1409.     }
  1410.  
  1411.     if (LastModeProg2c != ModeProg2c) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant du programmateur 2c a changé
  1412.     {
  1413.       tft.setTextColor(RED);                                                                                            // Affiche ON, AUTO, OFF
  1414.       tft.setTextSize(3);                                                                                               // Définit la taille
  1415.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(160, 198); tft.print(F("AUTO")); tft.setCursor(265, 198); tft.print(F("OFF"));
  1416.            if (ModeProg2c == 2) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface les deux autres
  1417.       else if (ModeProg2c == 1) {tft.drawRect(151, 188, 87, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "AUTO" et Efface les deux autres
  1418.       else if (ModeProg2c == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface les deux autres
  1419.      
  1420.       LastModeProg2c = ModeProg2c;                                                                                      // Mémorise le dernier le mode de fonctionnement courant du programmateur 2c
  1421.     }
  1422.   }
  1423.  
  1424. //**************************************************************************************************************************************************************************
  1425.   else if (PageCourante == 23) // ************************************************************************************* // Si la Page courante 23 est sélectionnée => Minuterie Prog 2
  1426.   {
  1427.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1428.     {
  1429.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1430.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1431.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("MINUTERIE Prog 2 (D25)"));                                 // Positionne et Affiche le texte
  1432.      
  1433.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1434.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1435.      
  1436.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  1437.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  1438.       tft.drawCircle(10, 119, 22, WHITE);
  1439.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  1440.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  1441.       tft.drawCircle(388, 119, 22, WHITE);
  1442.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  1443.      
  1444.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  1445.       tft.drawCircle(10, 224, 22, WHITE);
  1446.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  1447.       tft.drawLine(16, 230, 10, 218, BLACK);
  1448.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  1449.       tft.drawCircle(388, 224, 22, WHITE);
  1450.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  1451.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  1452.      
  1453.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  1454.       tft.setTextColor(WHITE); tft.setTextSize(2);
  1455.       tft.setCursor(384, 2); tft.print('X');
  1456.  
  1457.       tft.drawRoundRect(55, 42, 287, 76, 12, 0x3B0A);                                                                   // Affiche le cadre de l'heure courante
  1458.       tft.drawRoundRect(53, 40, 291, 80, 12, 0x3B0A);
  1459.      
  1460.       tft.fillCircle(198, 100, 4, BLUE); tft.fillCircle(198, 82, 4, BLUE);                                              // Affiche les deux points ":" de l'heure
  1461.      
  1462.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1463.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et - et les cadres
  1464.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('-');
  1465.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  1466.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('-');
  1467.      
  1468.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1469.     }
  1470.    
  1471.     // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si les heures ou les minutes de réglages de la minuterie 2 ont changé
  1472.     if (LastHrsReglagesMinuterie2 != HrsMinuterieReglageProg2 || LastMinsReglagesMinuterie2 != MinsMinuterieReglageProg2)
  1473.     {
  1474.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(8);                                                                // Définit le couleur et Positionne le texte
  1475.       tft.setCursor(92, 50);                                                                                            // Définit la position
  1476.       if (HrsMinuterieReglageProg2 < 10) {tft.print('0');} tft.print(HrsMinuterieReglageProg2);                         // Affiche les heures de réglages de la minuterie 2
  1477.       tft.setCursor(216, 50);                                                                                           // Définit la position
  1478.       if (MinsMinuterieReglageProg2 < 10) {tft.print('0');} tft.print(MinsMinuterieReglageProg2);                       // Affiche les minutes de réglages de la minuterie 2
  1479.       LastHrsReglagesMinuterie2 = HrsMinuterieReglageProg2;                                                             // Mémorise dernières heures de réglages de la minuterie 2
  1480.       LastMinsReglagesMinuterie2 = MinsMinuterieReglageProg2;                                                           // Mémorise dernières minutes de réglages de la minuterie 2
  1481.     }
  1482.  
  1483.     if (LastModeMinuterieProg2 != ModeMinuterieProg2) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant de la minuterie 2
  1484.     {
  1485.       tft.setTextColor(RED);                                                                                            // Affiche ON, OFF
  1486.       tft.setTextSize(3);                                                                                               // Définit la taille
  1487.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(265, 198); tft.print(F("OFF"));
  1488.            if (ModeMinuterieProg2 == 1) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface l'autre cadre
  1489.       else if (ModeMinuterieProg2 == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface l'autre cadre
  1490.      
  1491.       LastModeMinuterieProg2 = ModeMinuterieProg2;                                                                      // Mémorise le dernier le mode de fonctionnement courant de la minuterie 2
  1492.     }
  1493.   }
  1494.  
  1495. //**************************************************************************************************************************************************************************
  1496.   else if (PageCourante == 24) // ************************************************************************************* // Si la Page courante 24 est sélectionnée => Thermostat 2
  1497.   {
  1498.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1499.     {
  1500.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1501.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1502.       tft.setTextSize(2); tft.setCursor(85, 8); tft.print(F("THERMOSTAT 2 (D24)"));                                     // Positionne et Affiche le texte
  1503.      
  1504.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1505.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1506.      
  1507.       tft.setTextColor(BLACK); tft.setTextSize(2);                                                                      // Définit le couleur et Positionne le texte
  1508.       tft.fillCircle(10, 119, 20, WHITE);                                                                               // Dessine la touche
  1509.       tft.drawCircle(10, 119, 22, WHITE);
  1510.       tft.setCursor(6, 113); tft.print('<');                                                                            // Affiche la Touche "<"
  1511.       tft.fillCircle(388, 119, 20, WHITE);                                                                              // Dessine la touche
  1512.       tft.drawCircle(388, 119, 22, WHITE);
  1513.       tft.setCursor(384, 113); tft.print('>');                                                                          // Affiche la Touche ">"
  1514.      
  1515.       tft.fillCircle(10, 224, 20, WHITE);                                                                               // Dessine la touche
  1516.       tft.drawCircle(10, 224, 22, WHITE);
  1517.       tft.drawLine(4, 230, 10, 218, BLACK);                                                                             // Affiche la Touche "Haut"
  1518.       tft.drawLine(16, 230, 10, 218, BLACK);
  1519.       tft.fillCircle(388, 224, 20, WHITE);                                                                              // Dessine la touche
  1520.       tft.drawCircle(388, 224, 22, WHITE);
  1521.       tft.drawLine(4+376, 218, 10+376, 230, BLACK);                                                                     // Affiche la Touche "Bas"
  1522.       tft.drawLine(16+376, 218, 10+376, 230, BLACK);
  1523.      
  1524.       tft.fillRoundRect(379, 0, 20, 20, 2, RED);                                                                        // Dessine le bouton "X" pour sortir d'une page
  1525.       tft.setTextColor(WHITE); tft.setTextSize(2);
  1526.       tft.setCursor(384, 2); tft.print('X');
  1527.      
  1528.       tft.setTextColor(RED, BLACK);                                                                                     // Définit la couleur
  1529.       tft.setTextSize(2); tft.setCursor(130, 42); tft.print(F("TEMPERATURE"));                                          // Positionne et Affiche le texte
  1530.      
  1531.       tft.setTextColor(RED, BLACK);                                                                                     // Définit la couleur
  1532.       tft.setTextSize(2); tft.setCursor(135, 110); tft.print(F("THERMOSTAT"));                                          // Positionne et Affiche le texte
  1533.      
  1534.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1535.       tft.drawRect(73, 140, 25, 25, GREEN); tft.drawRect(288, 140, 25, 25, GREEN);                                      // Dessine les 2 boutons + et - et les cadres
  1536.       tft.setTextSize(2); tft.setCursor(81, 146); tft.print('+'); tft.setCursor(296, 146); tft.print('-');
  1537.      
  1538.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1539.     }
  1540.    
  1541.     if (LasttemperatureThermostat2 != temperatureThermostat2) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le thermostat 2 a changé
  1542.     {
  1543.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit le couleur et Positionne le texte
  1544.       tft.setTextSize(5);                                                                                               // Définit la taile
  1545.            if (temperatureThermostat2 >= 10) {tft.setCursor(132, 136); tft.print(temperatureThermostat2, 1);}           // Positionne et Affiche le thermostat 2
  1546.       else if (temperatureThermostat2 >= 0 && temperatureThermostat2 < 10){tft.setCursor(132, 136); tft.print(' '); tft.print(temperatureThermostat2, 1);}
  1547.       tft.setTextSize(2); tft.print((char)247);                                                                         // Affiche le symbole degré
  1548.       LasttemperatureThermostat2 = temperatureThermostat2;                                                              // Mémorise la dernière valeur du thermostat 2
  1549.     }
  1550.    
  1551.     if (LastModeThermostat2 != ModeThermostat2) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le mode de fonctionnement courant du thermostat 2
  1552.     {
  1553.       tft.setTextColor(RED);                                                                                            // Affiche ON, OFF
  1554.       tft.setTextSize(3);                                                                                               // Définit la taille
  1555.       tft.setCursor(80, 198); tft.print(F("ON")); tft.setCursor(265, 198); tft.print(F("OFF"));
  1556.            if (ModeThermostat2 == 1) {tft.drawRect(71, 188, 51, 39, GREEN); tft.drawRect(256, 188, 69, 39, BLACK); tft.drawRect(151, 188, 87, 39, BLACK);} //Affiche le Cadre Autour de "ON" et Efface l'autre cadre
  1557.       else if (ModeThermostat2 == 0) {tft.drawRect(256, 188, 69, 39, GREEN); tft.drawRect(151, 188, 87, 39, BLACK); tft.drawRect(71, 188, 51, 39, BLACK);} //Affiche le Cadre Autour de "OFF" et Efface l'autre cadre
  1558.      
  1559.       LastModeThermostat2 = ModeThermostat2;                                                                            // Mémorise le dernier le mode de fonctionnement courant du thermostat 2
  1560.     }
  1561.    
  1562.     temperatureCourante = dht.readTemperature();                                                                        // Relève la température courante
  1563.     //Serial.println(temperatureCourante); // Débug
  1564.     if (isnan(temperatureCourante)) {return;}                                                                           // Vérifie si la lecture de la température courante a échoué
  1565.    
  1566.     static int CompteurRelevesTemperature = 0;                                                                          // Déclare et Initialise les variables pour le calcul de la moyenne de la température
  1567.     static float SommeRelevesTemperature = 0.0;
  1568.    
  1569.     CompteurRelevesTemperature++;                                                                                       // Incrémente le compteur des relevés de température
  1570.     SommeRelevesTemperature = SommeRelevesTemperature + temperatureCourante;                                            // Calcule la somme des 50 relevés
  1571.    
  1572.     if (CompteurRelevesTemperature >= 100) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si 100 relevés ont été effectués
  1573.     {
  1574.       temperatureCourante = SommeRelevesTemperature / 100.0;                                                            // Calcule la moyenne des 100 relevés
  1575.       //Serial.println(temperatureCourante, 1); // Débug
  1576.       CompteurRelevesTemperature = 0; SommeRelevesTemperature = 0.0;                                                    // Réinitialisation des variables de calcul de la moyenne de la température
  1577.     }
  1578.    
  1579.     if (LastAffichageTemperatureModeThermostat2 != temperatureCourante) // ++++++++++++++++++++++++++++++++++++++++++++ // Si la température courante a changé
  1580.     {
  1581.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1582.       tft.setTextSize(3);                                                                                               // Définit la taile
  1583.            if (temperatureCourante >= 10) {tft.setCursor(152, 70); tft.print(temperatureCourante, 1);}                  // Positionne et Affiche la température courante
  1584.       else if (temperatureCourante >= 0 && temperatureCourante < 10){tft.setCursor(152, 70); tft.print(' '); tft.print(temperatureCourante, 1);}
  1585.       tft.setTextSize(2); tft.print((char)247);                                                                         // Affiche le symbole degré
  1586.       LastAffichageTemperatureModeThermostat2 = temperatureCourante;
  1587.     }
  1588.   }
  1589.  
  1590. //**************************************************************************************************************************************************************************
  1591.   else if (PageCourante == 110) // ************************************************************************************ // Réglage de l'heure de départ et d'arrêt du programmateur 1a
  1592.   {
  1593.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1594.     {
  1595.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1596.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1597.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 1a (D24)"));                                 // Positionne et Affiche le texte
  1598.      
  1599.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1600.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1601.      
  1602.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1603.       tft.setTextSize(3);                                                                                               // Définit la taille
  1604.       tft.setCursor(51, 55); tft.print(F("DEPART")); tft.setCursor(246, 55); tft.print(F("ARRET"));                     // Positionne et Affiche les messages
  1605.      
  1606.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1607.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et les cadres
  1608.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('+');
  1609.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  1610.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('+');
  1611.      
  1612.       tft.setTextColor(BLACK, WHITE);                                                                                   // Définit la couleur
  1613.       tft.fillCircle(22, 214, 20, WHITE);                                                                               // Dessine la touche
  1614.       tft.drawCircle(22, 214, 22, WHITE);
  1615.       tft.setCursor(12, 208); tft.print("OK");                                                                          // Affiche la Touche "OK"
  1616.       tft.fillCircle(376, 214, 20, WHITE);                                                                              // Dessine la touche
  1617.       tft.drawCircle(376, 214, 22, WHITE);
  1618.       tft.setCursor(372, 208); tft.print('X');                                                                          // Affiche la Touche "X"
  1619.      
  1620.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1621.     }
  1622.    
  1623.     if (LastHrsDepartReglages != HrsDepartReglages || LastMinsDepartReglages != MinsDepartReglages) // ---------------- // Si les heures ou les minutes de départ de réglages ont changé
  1624.     {
  1625.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1626.       tft.setTextSize(3);                                                                                               // Définit la taille
  1627.       tft.setCursor(60, 95);                                                                                            // Positionne le texte
  1628.       if (HrsDepartReglages < 10) {tft.print('0');} tft.print(HrsDepartReglages);                                       // Affiche le texte
  1629.       tft.print(':');                                                                                                   // Affiche le texte
  1630.       if (MinsDepartReglages < 10) {tft.print('0');} tft.print(MinsDepartReglages);                                     // Affiche le texte
  1631.       LastHrsDepartReglages = HrsDepartReglages;                                                                        // Mémorise les dernières heures de départ de réglages
  1632.       LastMinsDepartReglages = MinsDepartReglages;                                                                      // Mémorise les dernières minutes de départ de réglages
  1633.     }
  1634.    
  1635.     if (LastHrsArretReglages != HrsArretReglages || LastMinsArretReglages != MinsArretReglages) // -------------------- // Si les heures ou les minutes d'arrêt de réglages ont changé
  1636.     {
  1637.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1638.       tft.setTextSize(3);                                                                                               // Définit la taille
  1639.       tft.setCursor(245, 95);                                                                                           // Positionne le texte
  1640.       if (HrsArretReglages < 10) {tft.print('0');} tft.print(HrsArretReglages);                                         // Affiche le texte
  1641.       tft.print(':');                                                                                                   // Affiche le texte
  1642.       if (MinsArretReglages < 10) {tft.print('0');} tft.print(MinsArretReglages);                                       // Affiche le texte
  1643.       LastHrsArretReglages = HrsArretReglages;                                                                          // Mémorise les dernières heures d'arrêt de réglages
  1644.       LastMinsArretReglages = MinsArretReglages;                                                                        // Mémorise les dernières minutes de d'arrêt de réglages
  1645.     }
  1646.    
  1647.     FonctionLectureDS3234();                                                                                            // Appelle la fonction de lecture de l'heure courante et de la date
  1648.    
  1649.     if (LastMins != Mins) // ------------------------------------------------------------------------------------------ // Si les minutes courantes ont changé
  1650.     {
  1651.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(5);                                                                // Définit le couleur et Positionne le texte
  1652.       tft.setCursor(118, 186);                                                                                          // Définit la position
  1653.       if (Hrs < 10) {tft.print('0');} tft.print(Hrs);                                                                   // Affiche les heures
  1654.       tft.fillCircle(198, 216, 4, BLUE); tft.fillCircle(198, 198, 4, BLUE);                                             // Affiche les deux points ":" de l'heure
  1655.       tft.setCursor(218, 186);                                                                                          // Définit la position
  1656.       if (Mins < 10) {tft.print('0');} tft.print(Mins);                                                                 // Affiche les minutes
  1657.       LastMins = Mins;                                                                                                  // Mémorise les dernières minutes courantes
  1658.     }
  1659.   }
  1660.  
  1661. //**************************************************************************************************************************************************************************
  1662.   else if (PageCourante == 111) // ************************************************************************************ // Réglage de l'heure de départ et d'arrêt du programmateur 1b
  1663.   {
  1664.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1665.     {
  1666.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1667.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1668.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 1b (D24)"));                                 // Positionne et Affiche le texte
  1669.      
  1670.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1671.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1672.      
  1673.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1674.       tft.setTextSize(3);                                                                                               // Définit la taille
  1675.       tft.setCursor(51, 55); tft.print(F("DEPART")); tft.setCursor(246, 55); tft.print(F("ARRET"));                     // Positionne et Affiche les messages
  1676.      
  1677.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1678.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et les cadres
  1679.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('+');
  1680.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  1681.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('+');
  1682.      
  1683.       tft.setTextColor(BLACK, WHITE);                                                                                   // Définit la couleur
  1684.       tft.fillCircle(22, 214, 20, WHITE);                                                                               // Dessine la touche
  1685.       tft.drawCircle(22, 214, 22, WHITE);
  1686.       tft.setCursor(12, 208); tft.print("OK");                                                                          // Affiche la Touche "OK"
  1687.       tft.fillCircle(376, 214, 20, WHITE);                                                                              // Dessine la touche
  1688.       tft.drawCircle(376, 214, 22, WHITE);
  1689.       tft.setCursor(372, 208); tft.print('X');                                                                          // Affiche la Touche "X"
  1690.      
  1691.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1692.     }
  1693.    
  1694.     if (LastHrsDepartReglages != HrsDepartReglages || LastMinsDepartReglages != MinsDepartReglages) // ---------------- // Si les heures ou les minutes de départ de réglages ont changé
  1695.     {
  1696.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1697.       tft.setTextSize(3);                                                                                               // Définit la taille
  1698.       tft.setCursor(60, 95);                                                                                            // Positionne le texte
  1699.       if (HrsDepartReglages < 10) {tft.print('0');} tft.print(HrsDepartReglages);                                       // Affiche le texte
  1700.       tft.print(':');                                                                                                   // Affiche le texte
  1701.       if (MinsDepartReglages < 10) {tft.print('0');} tft.print(MinsDepartReglages);                                     // Affiche le texte
  1702.       LastHrsDepartReglages = HrsDepartReglages;                                                                        // Mémorise les dernières heures de départ de réglages
  1703.       LastMinsDepartReglages = MinsDepartReglages;                                                                      // Mémorise les dernières minutes de départ de réglages
  1704.     }
  1705.    
  1706.     if (LastHrsArretReglages != HrsArretReglages || LastMinsArretReglages != MinsArretReglages) // -------------------- // Si les heures ou les minutes d'arrêt de réglages ont changé
  1707.     {
  1708.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1709.       tft.setTextSize(3);                                                                                               // Définit la taille
  1710.       tft.setCursor(245, 95);                                                                                           // Positionne le texte
  1711.       if (HrsArretReglages < 10) {tft.print('0');} tft.print(HrsArretReglages);                                         // Affiche le texte
  1712.       tft.print(':');                                                                                                   // Affiche le texte
  1713.       if (MinsArretReglages < 10) {tft.print('0');} tft.print(MinsArretReglages);                                       // Affiche le texte
  1714.       LastHrsArretReglages = HrsArretReglages;                                                                          // Mémorise les dernières heures d'arrêt de réglages
  1715.       LastMinsArretReglages = MinsArretReglages;                                                                        // Mémorise les dernières minutes de d'arrêt de réglages
  1716.     }
  1717.    
  1718.     FonctionLectureDS3234();                                                                                            // Appelle la fonction de lecture de l'heure courante et de la date
  1719.    
  1720.     if (LastMins != Mins) // ------------------------------------------------------------------------------------------ // Si les minutes courantes ont changé
  1721.     {
  1722.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(5);                                                                // Définit le couleur et Positionne le texte
  1723.       tft.setCursor(118, 186);                                                                                          // Définit la position
  1724.       if (Hrs < 10) {tft.print('0');} tft.print(Hrs);                                                                   // Affiche les heures
  1725.       tft.fillCircle(198, 216, 4, BLUE); tft.fillCircle(198, 198, 4, BLUE);                                             // Affiche les deux points ":" de l'heure
  1726.       tft.setCursor(218, 186);                                                                                          // Définit la position
  1727.       if (Mins < 10) {tft.print('0');} tft.print(Mins);                                                                 // Affiche les minutes
  1728.       LastMins = Mins;                                                                                                  // Mémorise les dernières minutes courantes
  1729.     }
  1730.   }
  1731.  
  1732. //**************************************************************************************************************************************************************************
  1733.   else if (PageCourante == 112) // ************************************************************************************ // Réglage de l'heure de départ et d'arrêt du programmateur 1c
  1734.   {
  1735.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1736.     {
  1737.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1738.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1739.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 1c (D24)"));                                 // Positionne et Affiche le texte
  1740.      
  1741.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1742.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1743.      
  1744.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1745.       tft.setTextSize(3);                                                                                               // Définit la taille
  1746.       tft.setCursor(51, 55); tft.print(F("DEPART")); tft.setCursor(246, 55); tft.print(F("ARRET"));                     // Positionne et Affiche les messages
  1747.      
  1748.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1749.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et les cadres
  1750.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('+');
  1751.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  1752.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('+');
  1753.      
  1754.       tft.setTextColor(BLACK, WHITE);                                                                                   // Définit la couleur
  1755.       tft.fillCircle(22, 214, 20, WHITE);                                                                               // Dessine la touche
  1756.       tft.drawCircle(22, 214, 22, WHITE);
  1757.       tft.setCursor(12, 208); tft.print("OK");                                                                          // Affiche la Touche "OK"
  1758.       tft.fillCircle(376, 214, 20, WHITE);                                                                              // Dessine la touche
  1759.       tft.drawCircle(376, 214, 22, WHITE);
  1760.       tft.setCursor(372, 208); tft.print('X');                                                                          // Affiche la Touche "X"
  1761.      
  1762.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1763.     }
  1764.    
  1765.     if (LastHrsDepartReglages != HrsDepartReglages || LastMinsDepartReglages != MinsDepartReglages) // ---------------- // Si les heures ou les minutes de départ de réglages ont changé
  1766.     {
  1767.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1768.       tft.setTextSize(3);                                                                                               // Définit la taille
  1769.       tft.setCursor(60, 95);                                                                                            // Positionne le texte
  1770.       if (HrsDepartReglages < 10) {tft.print('0');} tft.print(HrsDepartReglages);                                       // Affiche le texte
  1771.       tft.print(':');                                                                                                   // Affiche le texte
  1772.       if (MinsDepartReglages < 10) {tft.print('0');} tft.print(MinsDepartReglages);                                     // Affiche le texte
  1773.       LastHrsDepartReglages = HrsDepartReglages;                                                                        // Mémorise les dernières heures de départ de réglages
  1774.       LastMinsDepartReglages = MinsDepartReglages;                                                                      // Mémorise les dernières minutes de départ de réglages
  1775.     }
  1776.    
  1777.     if (LastHrsArretReglages != HrsArretReglages || LastMinsArretReglages != MinsArretReglages) // -------------------- // Si les heures ou les minutes d'arrêt de réglages ont changé
  1778.     {
  1779.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1780.       tft.setTextSize(3);                                                                                               // Définit la taille
  1781.       tft.setCursor(245, 95);                                                                                           // Positionne le texte
  1782.       if (HrsArretReglages < 10) {tft.print('0');} tft.print(HrsArretReglages);                                         // Affiche le texte
  1783.       tft.print(':');                                                                                                   // Affiche le texte
  1784.       if (MinsArretReglages < 10) {tft.print('0');} tft.print(MinsArretReglages);                                       // Affiche le texte
  1785.       LastHrsArretReglages = HrsArretReglages;                                                                          // Mémorise les dernières heures d'arrêt de réglages
  1786.       LastMinsArretReglages = MinsArretReglages;                                                                        // Mémorise les dernières minutes de d'arrêt de réglages
  1787.     }
  1788.    
  1789.     FonctionLectureDS3234();                                                                                            // Appelle la fonction de lecture de l'heure courante et de la date
  1790.    
  1791.     if (LastMins != Mins) // ------------------------------------------------------------------------------------------ // Si les minutes courantes ont changé
  1792.     {
  1793.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(5);                                                                // Définit le couleur et Positionne le texte
  1794.       tft.setCursor(118, 186);                                                                                          // Définit la position
  1795.       if (Hrs < 10) {tft.print('0');} tft.print(Hrs);                                                                   // Affiche les heures
  1796.       tft.fillCircle(198, 216, 4, BLUE); tft.fillCircle(198, 198, 4, BLUE);                                             // Affiche les deux points ":" de l'heure
  1797.       tft.setCursor(218, 186);                                                                                          // Définit la position
  1798.       if (Mins < 10) {tft.print('0');} tft.print(Mins);                                                                 // Affiche les minutes
  1799.       LastMins = Mins;                                                                                                  // Mémorise les dernières minutes courantes
  1800.     }
  1801.   }
  1802.  
  1803. //**************************************************************************************************************************************************************************
  1804.   else if (PageCourante == 210) // ************************************************************************************ // Réglage de l'heure de départ et d'arrêt du programmateur 2a
  1805.   {
  1806.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1807.     {
  1808.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1809.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1810.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 2a (D25)"));                                 // Positionne et Affiche le texte
  1811.      
  1812.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1813.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1814.      
  1815.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1816.       tft.setTextSize(3);                                                                                               // Définit la taille
  1817.       tft.setCursor(51, 55); tft.print(F("DEPART")); tft.setCursor(246, 55); tft.print(F("ARRET"));                     // Positionne et Affiche les messages
  1818.      
  1819.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1820.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et les cadres
  1821.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('+');
  1822.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  1823.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('+');
  1824.      
  1825.       tft.setTextColor(BLACK, WHITE);                                                                                   // Définit la couleur
  1826.       tft.fillCircle(22, 214, 20, WHITE);                                                                               // Dessine la touche
  1827.       tft.drawCircle(22, 214, 22, WHITE);
  1828.       tft.setCursor(12, 208); tft.print("OK");                                                                          // Affiche la Touche "OK"
  1829.       tft.fillCircle(376, 214, 20, WHITE);                                                                              // Dessine la touche
  1830.       tft.drawCircle(376, 214, 22, WHITE);
  1831.       tft.setCursor(372, 208); tft.print('X');                                                                          // Affiche la Touche "X"
  1832.      
  1833.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1834.     }
  1835.    
  1836.     if (LastHrsDepartReglages != HrsDepartReglages || LastMinsDepartReglages != MinsDepartReglages) // ---------------- // Si les heures ou les minutes de départ de réglages ont changé
  1837.     {
  1838.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1839.       tft.setTextSize(3);                                                                                               // Définit la taille
  1840.       tft.setCursor(60, 95);                                                                                            // Positionne le texte
  1841.       if (HrsDepartReglages < 10) {tft.print('0');} tft.print(HrsDepartReglages);                                       // Affiche le texte
  1842.       tft.print(':');                                                                                                   // Affiche le texte
  1843.       if (MinsDepartReglages < 10) {tft.print('0');} tft.print(MinsDepartReglages);                                     // Affiche le texte
  1844.       LastHrsDepartReglages = HrsDepartReglages;                                                                        // Mémorise les dernières heures de départ de réglages
  1845.       LastMinsDepartReglages = MinsDepartReglages;                                                                      // Mémorise les dernières minutes de départ de réglages
  1846.     }
  1847.    
  1848.     if (LastHrsArretReglages != HrsArretReglages || LastMinsArretReglages != MinsArretReglages) // -------------------- // Si les heures ou les minutes d'arrêt de réglages ont changé
  1849.     {
  1850.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1851.       tft.setTextSize(3);                                                                                               // Définit la taille
  1852.       tft.setCursor(245, 95);                                                                                           // Positionne le texte
  1853.       if (HrsArretReglages < 10) {tft.print('0');} tft.print(HrsArretReglages);                                         // Affiche le texte
  1854.       tft.print(':');                                                                                                   // Affiche le texte
  1855.       if (MinsArretReglages < 10) {tft.print('0');} tft.print(MinsArretReglages);                                       // Affiche le texte
  1856.       LastHrsArretReglages = HrsArretReglages;                                                                          // Mémorise les dernières heures d'arrêt de réglages
  1857.       LastMinsArretReglages = MinsArretReglages;                                                                        // Mémorise les dernières minutes de d'arrêt de réglages
  1858.     }
  1859.    
  1860.     FonctionLectureDS3234();                                                                                            // Appelle la fonction de lecture de l'heure courante et de la date
  1861.    
  1862.     if (LastMins != Mins) // ------------------------------------------------------------------------------------------ // Si les minutes courantes ont changé
  1863.     {
  1864.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(5);                                                                // Définit le couleur et Positionne le texte
  1865.       tft.setCursor(118, 186);                                                                                          // Définit la position
  1866.       if (Hrs < 10) {tft.print('0');} tft.print(Hrs);                                                                   // Affiche les heures
  1867.       tft.fillCircle(198, 216, 4, BLUE); tft.fillCircle(198, 198, 4, BLUE);                                             // Affiche les deux points ":" de l'heure
  1868.       tft.setCursor(218, 186);                                                                                          // Définit la position
  1869.       if (Mins < 10) {tft.print('0');} tft.print(Mins);                                                                 // Affiche les minutes
  1870.       LastMins = Mins;                                                                                                  // Mémorise les dernières minutes courantes
  1871.     }
  1872.   }
  1873.  
  1874. //**************************************************************************************************************************************************************************
  1875.   else if (PageCourante == 211) // ************************************************************************************ // Réglage de l'heure de départ et d'arrêt du programmateur 2b
  1876.   {
  1877.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1878.     {
  1879.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1880.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1881.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 2b (D25)"));                                 // Positionne et Affiche le texte
  1882.      
  1883.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1884.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1885.      
  1886.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1887.       tft.setTextSize(3);                                                                                               // Définit la taille
  1888.       tft.setCursor(51, 55); tft.print(F("DEPART")); tft.setCursor(246, 55); tft.print(F("ARRET"));                     // Positionne et Affiche les messages
  1889.      
  1890.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1891.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et les cadres
  1892.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('+');
  1893.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  1894.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('+');
  1895.      
  1896.       tft.setTextColor(BLACK, WHITE);                                                                                   // Définit la couleur
  1897.       tft.fillCircle(22, 214, 20, WHITE);                                                                               // Dessine la touche
  1898.       tft.drawCircle(22, 214, 22, WHITE);
  1899.       tft.setCursor(12, 208); tft.print("OK");                                                                          // Affiche la Touche "OK"
  1900.       tft.fillCircle(376, 214, 20, WHITE);                                                                              // Dessine la touche
  1901.       tft.drawCircle(376, 214, 22, WHITE);
  1902.       tft.setCursor(372, 208); tft.print('X');                                                                          // Affiche la Touche "X"
  1903.      
  1904.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1905.     }
  1906.    
  1907.     if (LastHrsDepartReglages != HrsDepartReglages || LastMinsDepartReglages != MinsDepartReglages) // ---------------- // Si les heures ou les minutes de départ de réglages ont changé
  1908.     {
  1909.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1910.       tft.setTextSize(3);                                                                                               // Définit la taille
  1911.       tft.setCursor(60, 95);                                                                                            // Positionne le texte
  1912.       if (HrsDepartReglages < 10) {tft.print('0');} tft.print(HrsDepartReglages);                                       // Affiche le texte
  1913.       tft.print(':');                                                                                                   // Affiche le texte
  1914.       if (MinsDepartReglages < 10) {tft.print('0');} tft.print(MinsDepartReglages);                                     // Affiche le texte
  1915.       LastHrsDepartReglages = HrsDepartReglages;                                                                        // Mémorise les dernières heures de départ de réglages
  1916.       LastMinsDepartReglages = MinsDepartReglages;                                                                      // Mémorise les dernières minutes de départ de réglages
  1917.     }
  1918.    
  1919.     if (LastHrsArretReglages != HrsArretReglages || LastMinsArretReglages != MinsArretReglages) // -------------------- // Si les heures ou les minutes d'arrêt de réglages ont changé
  1920.     {
  1921.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1922.       tft.setTextSize(3);                                                                                               // Définit la taille
  1923.       tft.setCursor(245, 95);                                                                                           // Positionne le texte
  1924.       if (HrsArretReglages < 10) {tft.print('0');} tft.print(HrsArretReglages);                                         // Affiche le texte
  1925.       tft.print(':');                                                                                                   // Affiche le texte
  1926.       if (MinsArretReglages < 10) {tft.print('0');} tft.print(MinsArretReglages);                                       // Affiche le texte
  1927.       LastHrsArretReglages = HrsArretReglages;                                                                          // Mémorise les dernières heures d'arrêt de réglages
  1928.       LastMinsArretReglages = MinsArretReglages;                                                                        // Mémorise les dernières minutes de d'arrêt de réglages
  1929.     }
  1930.    
  1931.     FonctionLectureDS3234();                                                                                            // Appelle la fonction de lecture de l'heure courante et de la date
  1932.    
  1933.     if (LastMins != Mins) // ------------------------------------------------------------------------------------------ // Si les minutes courantes ont changé
  1934.     {
  1935.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(5);                                                                // Définit le couleur et Positionne le texte
  1936.       tft.setCursor(118, 186);                                                                                          // Définit la position
  1937.       if (Hrs < 10) {tft.print('0');} tft.print(Hrs);                                                                   // Affiche les heures
  1938.       tft.fillCircle(198, 216, 4, BLUE); tft.fillCircle(198, 198, 4, BLUE);                                             // Affiche les deux points ":" de l'heure
  1939.       tft.setCursor(218, 186);                                                                                          // Définit la position
  1940.       if (Mins < 10) {tft.print('0');} tft.print(Mins);                                                                 // Affiche les minutes
  1941.       LastMins = Mins;                                                                                                  // Mémorise les dernières minutes courantes
  1942.     }
  1943.   }
  1944.  
  1945. //**************************************************************************************************************************************************************************
  1946.   else if (PageCourante == 212) // ************************************************************************************ // Réglage de l'heure de départ et d'arrêt du programmateur 2c
  1947.   {
  1948.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  1949.     {
  1950.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  1951.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  1952.       tft.setTextSize(2); tft.setCursor(65, 8); tft.print(F("PROGRAMMATEUR 2c (D25)"));                                 // Positionne et Affiche le texte
  1953.      
  1954.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1955.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  1956.      
  1957.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1958.       tft.setTextSize(3);                                                                                               // Définit la taille
  1959.       tft.setCursor(51, 55); tft.print(F("DEPART")); tft.setCursor(246, 55); tft.print(F("ARRET"));                     // Positionne et Affiche les messages
  1960.      
  1961.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  1962.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et les cadres
  1963.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('+');
  1964.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  1965.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('+');
  1966.      
  1967.       tft.setTextColor(BLACK, WHITE);                                                                                   // Définit la couleur
  1968.       tft.fillCircle(22, 214, 20, WHITE);                                                                               // Dessine la touche
  1969.       tft.drawCircle(22, 214, 22, WHITE);
  1970.       tft.setCursor(12, 208); tft.print("OK");                                                                          // Affiche la Touche "OK"
  1971.       tft.fillCircle(376, 214, 20, WHITE);                                                                              // Dessine la touche
  1972.       tft.drawCircle(376, 214, 22, WHITE);
  1973.       tft.setCursor(372, 208); tft.print('X');                                                                          // Affiche la Touche "X"
  1974.      
  1975.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  1976.     }
  1977.    
  1978.     if (LastHrsDepartReglages != HrsDepartReglages || LastMinsDepartReglages != MinsDepartReglages) // ---------------- // Si les heures ou les minutes de départ de réglages ont changé
  1979.     {
  1980.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1981.       tft.setTextSize(3);                                                                                               // Définit la taille
  1982.       tft.setCursor(60, 95);                                                                                            // Positionne le texte
  1983.       if (HrsDepartReglages < 10) {tft.print('0');} tft.print(HrsDepartReglages);                                       // Affiche le texte
  1984.       tft.print(':');                                                                                                   // Affiche le texte
  1985.       if (MinsDepartReglages < 10) {tft.print('0');} tft.print(MinsDepartReglages);                                     // Affiche le texte
  1986.       LastHrsDepartReglages = HrsDepartReglages;                                                                        // Mémorise les dernières heures de départ de réglages
  1987.       LastMinsDepartReglages = MinsDepartReglages;                                                                      // Mémorise les dernières minutes de départ de réglages
  1988.     }
  1989.    
  1990.     if (LastHrsArretReglages != HrsArretReglages || LastMinsArretReglages != MinsArretReglages) // -------------------- // Si les heures ou les minutes d'arrêt de réglages ont changé
  1991.     {
  1992.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  1993.       tft.setTextSize(3);                                                                                               // Définit la taille
  1994.       tft.setCursor(245, 95);                                                                                           // Positionne le texte
  1995.       if (HrsArretReglages < 10) {tft.print('0');} tft.print(HrsArretReglages);                                         // Affiche le texte
  1996.       tft.print(':');                                                                                                   // Affiche le texte
  1997.       if (MinsArretReglages < 10) {tft.print('0');} tft.print(MinsArretReglages);                                       // Affiche le texte
  1998.       LastHrsArretReglages = HrsArretReglages;                                                                          // Mémorise les dernières heures d'arrêt de réglages
  1999.       LastMinsArretReglages = MinsArretReglages;                                                                        // Mémorise les dernières minutes de d'arrêt de réglages
  2000.     }
  2001.    
  2002.     FonctionLectureDS3234();                                                                                            // Appelle la fonction de lecture de l'heure courante et de la date
  2003.    
  2004.     if (LastMins != Mins) // ------------------------------------------------------------------------------------------ // Si les minutes courantes ont changé
  2005.     {
  2006.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(5);                                                                // Définit le couleur et Positionne le texte
  2007.       tft.setCursor(118, 186);                                                                                          // Définit la position
  2008.       if (Hrs < 10) {tft.print('0');} tft.print(Hrs);                                                                   // Affiche les heures
  2009.       tft.fillCircle(198, 216, 4, BLUE); tft.fillCircle(198, 198, 4, BLUE);                                             // Affiche les deux points ":" de l'heure
  2010.       tft.setCursor(218, 186);                                                                                          // Définit la position
  2011.       if (Mins < 10) {tft.print('0');} tft.print(Mins);                                                                 // Affiche les minutes
  2012.       LastMins = Mins;                                                                                                  // Mémorise les dernières minutes courantes
  2013.     }
  2014.   }
  2015.  
  2016. // *************************************************************************************************************************************************************************
  2017.   else if (PageCourante == 500) // ************************************************************************************ // Réglage de l'heure courante
  2018.   {
  2019.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  2020.     {
  2021.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  2022.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  2023.       tft.setTextSize(2); tft.setCursor(38, 8); tft.print(F("REGLAGE DE L'HEURE COURANTE"));                            // Positionne et Affiche le texte
  2024.      
  2025.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  2026.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  2027.      
  2028.       tft.setTextColor(BLACK, WHITE);                                                                                   // Définit la couleur
  2029.       tft.fillCircle(22, 214, 20, WHITE);                                                                               // Dessine la touche
  2030.       tft.drawCircle(22, 214, 22, WHITE);
  2031.       tft.setCursor(12, 208); tft.print("OK");                                                                          // Affiche la Touche "OK"
  2032.       tft.fillCircle(376, 214, 20, WHITE);                                                                              // Dessine la touche
  2033.       tft.drawCircle(376, 214, 22, WHITE);
  2034.       tft.setCursor(372, 208); tft.print('X');                                                                          // Affiche la Touche "X"
  2035.      
  2036.       tft.drawRoundRect(55, 42, 287, 76, 12, 0x3B0A);                                                                   // Affiche le cadre de l'heure courante
  2037.       tft.drawRoundRect(53, 40, 291, 80, 12, 0x3B0A);
  2038.      
  2039.       tft.fillCircle(198, 100, 4, BLUE); tft.fillCircle(198, 82, 4, BLUE);                                              // Affiche les deux points ":" de l'heure
  2040.      
  2041.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  2042.       tft.drawRect(64, 130, 25, 25, GREEN); tft.drawRect(118, 130, 25, 25, GREEN);                                      // Dessine les 4 boutons + et - et les cadres
  2043.       tft.setTextSize(2); tft.setCursor(72, 136); tft.print('+'); tft.setCursor(126, 136); tft.print('-');
  2044.       tft.drawRect(249, 130, 25, 25, GREEN); tft.drawRect(303, 130, 25, 25, GREEN);
  2045.       tft.setCursor(257, 136); tft.print('+'); tft.setCursor(311, 136); tft.print('-');
  2046.      
  2047.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  2048.     }
  2049.  
  2050.     if (LastHrsReglages != HrsReglages || LastMinsReglages != MinsReglages) // ---------------------------------------- // Si les heures ou les minutes de réglages ont changé
  2051.     {
  2052.       tft.setTextColor(BLUE, BLACK); tft.setTextSize(8);                                                                // Définit le couleur et Positionne le texte
  2053.       tft.setCursor(92, 50);                                                                                            // Définit la position
  2054.       if (HrsReglages < 10) {tft.print('0');} tft.print(HrsReglages);                                                   // Affiche les heures de réglages
  2055.       tft.setCursor(216, 50);                                                                                           // Définit la position
  2056.       if (MinsReglages < 10) {tft.print('0');} tft.print(MinsReglages);                                                 // Affiche les minutes de réglages
  2057.       LastHrsReglages = HrsReglages;                                                                                    // Mémorise dernières heures de réglages
  2058.       LastMinsReglages = MinsReglages;                                                                                  // Mémorise dernières minutes de réglages
  2059.     }
  2060.   }
  2061.  
  2062. // *************************************************************************************************************************************************************************
  2063.   else if (PageCourante == 501) // ************************************************************************************ // Réglage de la date courante
  2064.   {
  2065.     if (LastPageCourante != PageCourante) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la Page courante a changé
  2066.     {
  2067.       tft.fillScreen(BLACK);                                                                                            // Efface l'écran TFT
  2068.       tft.setTextColor(RED);                                                                                            // Définit la couleur
  2069.       tft.setTextSize(2); tft.setCursor(38, 8); tft.print(F("REGLAGE DE LA DATE COURANTE"));                            // Positionne et Affiche le texte
  2070.      
  2071.       tft.drawLine(5, 31, 394, 31, DARKRED);                                                                            // Trace une ligne rouge horizontale
  2072.       tft.drawLine(5, 32, 394, 32, DARKRED);                                                                            // Trace une ligne rouge horizontale
  2073.      
  2074.       tft.setTextColor(BLACK, WHITE);                                                                                   // Définit la couleur
  2075.       tft.fillCircle(22, 214, 20, WHITE);                                                                               // Dessine la touche
  2076.       tft.drawCircle(22, 214, 22, WHITE);
  2077.       tft.setCursor(12, 208); tft.print("OK");                                                                          // Affiche la Touche "OK"
  2078.       tft.fillCircle(376, 214, 20, WHITE);                                                                              // Dessine la touche
  2079.       tft.drawCircle(376, 214, 22, WHITE);
  2080.       tft.setCursor(372, 208); tft.print('X');                                                                          // Affiche la Touche "X"
  2081.      
  2082.       tft.setTextSize(2);                                                                                               // Définit la taille
  2083.       tft.setTextColor(WHITE, BLACK);                                                                                   // Définit la couleur
  2084.       tft.setCursor(60, 105); tft.print(F("JOUR"));                                                                     // Positionne et Affiche le texte
  2085.       tft.setCursor(60, 157); tft.print(F("MOIS"));                                                                     // Positionne et Affiche le texte
  2086.       tft.setCursor(60, 209); tft.print(F("ANNEE"));                                                                    // Positionne et Affiche le texte
  2087.  
  2088.       tft.setTextSize(2);
  2089.       tft.drawRect(145, 203, 25, 25, GREEN); tft.drawRect(290, 203, 25, 25, GREEN);                                     // Dessine les 6 boutons + et - et les cadres
  2090.       tft.setCursor(153, 209); tft.print('+'); tft.setCursor(298, 209); tft.print('-');
  2091.       tft.drawRect(145, 151, 25, 25, GREEN); tft.drawRect(290, 151, 25, 25, GREEN);
  2092.       tft.setCursor(153, 157); tft.print('+'); tft.setCursor(298, 157); tft.print('-');
  2093.       tft.drawRect(145, 99, 25, 25, GREEN); tft.drawRect(290, 99, 25, 25, GREEN);
  2094.       tft.setCursor(153, 105); tft.print('+'); tft.setCursor(298, 105); tft.print('-');
  2095.      
  2096.       LastPageCourante = PageCourante;                                                                                  // Mémorise la dernière Page courante
  2097.     }
  2098.    
  2099.     if (LastAffichageJourSemaine != AffichageJourSemaine) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le dernier état de l'indicateur d'affichage des jours de la semaine a changé
  2100.     {
  2101.       uint16_t coul;                                                                                                    // Déclarare la variable couleur des touches
  2102.      
  2103.       tft.setTextSize(2);                                                                                               // Définit la taille
  2104.       tft.setTextColor(WHITE);                                                                                          // Définit la couleur
  2105.      
  2106.       if (JourSemaineReglages == 1) {coul = 0x195B62;} else {coul = RED;}                                               // Sélectionne la couleur
  2107.       tft.fillCircle(49, 60, 16, coul);                                                                                 // Dessine la Touche Dimanche "D"
  2108.       tft.drawCircle(49, 60, 20, coul);  
  2109.       tft.setCursor(45, 53); tft.print('D');                                                                            // Positionne et Affiche le texte
  2110.      
  2111.       if (JourSemaineReglages == 2) {coul = 0x195B62;} else {coul = RED;}                                               // Sélectionne la couleur
  2112.       tft.fillCircle(99, 60, 16, coul);                                                                                 // Dessine la Touche Lundi "L"
  2113.       tft.drawCircle(99, 60, 20, coul);
  2114.       tft.setCursor(95, 53); tft.print('L');                                                                            // Positionne et Affiche le texte
  2115.      
  2116.       if (JourSemaineReglages == 3) {coul = 0x195B62;} else {coul = RED;}                                               // Sélectionne la couleur
  2117.       tft.fillCircle(149, 60, 16, coul);                                                                                // Dessine la Touche Mardi "M"
  2118.       tft.drawCircle(149, 60, 20, coul);
  2119.       tft.setCursor(145, 53); tft.print('M');                                                                           // Positionne et Affiche le texte
  2120.      
  2121.       if (JourSemaineReglages == 4) {coul = 0x195B62;} else {coul = RED;}                                               // Sélectionne la couleur
  2122.       tft.fillCircle(199, 60, 16, coul);                                                                                // Dessine la Touche Mercredi "M"
  2123.       tft.drawCircle(199, 60, 20, coul);
  2124.       tft.setCursor(195, 53); tft.print('M');                                                                           // Positionne et Affiche le texte
  2125.      
  2126.       if (JourSemaineReglages == 5) {coul = 0x195B62;} else {coul = RED;}                                               // Sélectionne la couleur
  2127.       tft.fillCircle(249, 60, 16, coul);                                                                                // Dessine la Touche Jeudi "J"
  2128.       tft.drawCircle(249, 60, 20, coul);
  2129.       tft.setCursor(245, 53); tft.print('J');                                                                           // Positionne et Affiche le texte
  2130.      
  2131.       if (JourSemaineReglages == 6) {coul = 0x195B62;} else {coul = RED;}                                               // Sélectionne la couleur
  2132.       tft.fillCircle(299, 60, 16, coul);                                                                                // Dessine la Touche Vendredi "V"
  2133.       tft.drawCircle(299, 60, 20, coul);
  2134.       tft.setCursor(295, 53); tft.print('V');                                                                           // Positionne et Affiche le texte
  2135.      
  2136.       if (JourSemaineReglages == 7) {coul = 0x195B62;} else {coul = RED;}                                               // Sélectionne la couleur
  2137.       tft.fillCircle(349, 60, 16, coul);                                                                                // Dessine la Touche Samedi "S"
  2138.       tft.drawCircle(349, 60, 20, coul);
  2139.       tft.setCursor(345, 53); tft.print('S');                                                                           // Positionne et Affiche le texte
  2140.      
  2141.       LastAffichageJourSemaine = AffichageJourSemaine;                                                                  // Mémorise le dernier indicateur d'affichage des jours de la semaine
  2142.     }
  2143.    
  2144.     if (LastJourReglages != JourReglages) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le dernier jour de réglages a changé
  2145.     {
  2146.       tft.setTextSize(3);                                                                                               // Définit la taille
  2147.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  2148.       tft.setCursor(210, 100); if (JourReglages < 10) {tft.print('0');} tft.print(JourReglages);                        // Positionne et Affiche la variable de réglages
  2149.       LastJourReglages = JourReglages;                                                                                  // Mémorise le dernier indicateur d'affichage des jours
  2150.       delay(40);                                                                                                        // Temporise 40ms
  2151.     }
  2152.    
  2153.     if (LastMoisReglages != MoisReglages) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le dernier mois de réglages a changé
  2154.     {
  2155.       tft.setTextSize(3);                                                                                               // Définit la taille
  2156.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  2157.       tft.setCursor(210, 152); if (MoisReglages < 10) {tft.print('0');} tft.print(MoisReglages);                        // Positionne et Affiche la variable de réglages
  2158.       LastMoisReglages = MoisReglages;                                                                                  // Mémorise le dernier mois de réglages
  2159.       delay(40);                                                                                                        // Temporise 40ms
  2160.     }
  2161.    
  2162.     if (LastAnneeReglages != AnneeReglages) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la dernière année de réglage a changé
  2163.     {
  2164.       tft.setTextSize(3);                                                                                               // Définit la taille
  2165.       tft.setTextColor(BLUE, BLACK);                                                                                    // Définit la couleur
  2166.       tft.setCursor(195, 204); tft.print(F("20")); tft.print(AnneeReglages);                                            // Positionne et Affiche la variable de réglages
  2167.       LastAnneeReglages = AnneeReglages;                                                                                // Mémorise la dernière année de réglages
  2168.       delay(40);                                                                                                        // Temporise 40ms
  2169.     }
  2170.   }
  2171.  
  2172. //**************************************************************************************************************************************************************************
  2173.   GestionTactile (); // *********************************************************************************************** // Appelle la fonction de gestion du mode tactile
  2174.  
  2175. //**************************************************************************************************************************************************************************
  2176.   if (ModeMinuterieProg1 == 1) // ************************************************************************************* // Si la minuterie 1 est activée
  2177.   {
  2178.     if (millis() - t1DebutTempoMinuterie1 >= DureeMinuterie1_ms && t1DebutTempoMinuterie1 != 0) // ++++++++++++++++++++ // Si la temporisation de la minuterie 1 est écoulée
  2179.     {
  2180.       digitalWrite(BrocheProg1LedVerte, LOW);                                                                           // Désactive la sortie 1
  2181.       ModeMinuterieProg1 = 0;                                                                                           // Définit le mode de la minuterie 1
  2182.       etatSortieProg1 = false;                                                                                          // Désactive l'état courant de la sortie 1
  2183.       LastModeMinuterieProg1 = -1;                                                                                      // Force l'affichage du mode de la minuterie 1
  2184.       t1DebutTempoMinuterie1 = 0;                                                                                       // Réinitialise la temporisation de la minuterie 1 en ms
  2185.     }
  2186.   }
  2187.   else // ************************************************************************************************************* // Si la minuterie 1 n'est psa activée
  2188.   {
  2189. //**************************************************************************************************************************************************************************
  2190.     if (ModeProg1a == 1) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le programmateur 1a est activé
  2191.     {
  2192.       if (IterationProg1a[JourSemaine-1] == 1) // --------------------------------------------------------------------- // Si l'itération du jour de la semaine correspond
  2193.       {
  2194.         if (HrsDepartProg1a == HrsArretProg1a && MinsDepartProg1a == MinsArretProg1a) {return;} // .................... // Si l'heure de départ est égale à l'heure d'arrêt => Retour début loop()
  2195.        
  2196.         if (Hrs == HrsDepartProg1a && Mins == MinsDepartProg1a && Secs < 3) // ........................................ // Si l'heure courante est égale à l'heure de départ du programmateur 1a
  2197.         {
  2198.           digitalWrite(BrocheProg1LedVerte, HIGH);                                                                      // Active la sortie du programmateur 1
  2199.           etatSortieProg1 = true;                                                                                       // Active l'état courant de la sortie du programmateur 1
  2200.         }
  2201.         else if (Hrs == HrsArretProg1a && Mins == MinsArretProg1a && Secs < 3) // ..................................... // Si l'heure courante est égale à l'heure d'arrêt du programmateur 1a
  2202.         {
  2203.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 1
  2204.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 1
  2205.         }
  2206.       }
  2207.     }
  2208.    
  2209.     if (ModeProg1b == 1) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le programmateur 1b est activé
  2210.     {
  2211.       if (IterationProg1b[JourSemaine-1] == 1) // --------------------------------------------------------------------- // Si l'itération du jour de la semaine correspond
  2212.       {
  2213.         if (HrsDepartProg1b == HrsArretProg1b && MinsDepartProg1b == MinsArretProg1b) {return;} // .................... // Si l'heure de départ est égale à l'heure d'arrêt => Retour début loop()
  2214.        
  2215.         if (Hrs == HrsDepartProg1b && Mins == MinsDepartProg1b && Secs < 3) // ........................................ // Si l'heure courante est égale à l'heure de départ du programmateur 1a
  2216.         {
  2217.           digitalWrite(BrocheProg1LedVerte, HIGH);                                                                      // Active la sortie du programmateur 1
  2218.           etatSortieProg1 = true;                                                                                       // Active l'état courant de la sortie du programmateur 1
  2219.         }
  2220.         else if (Hrs == HrsArretProg1b && Mins == MinsArretProg1b && Secs < 3) // ..................................... // Si l'heure courante est égale à l'heure d'arrêt du programmateur 1a
  2221.         {
  2222.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 1
  2223.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 1
  2224.         }
  2225.       }
  2226.     }
  2227.    
  2228.     if (ModeProg1c == 1) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le programmateur 1c est activé
  2229.     {
  2230.       if (IterationProg1c[JourSemaine-1] == 1) // --------------------------------------------------------------------- // Si l'itération du jour de la semaine correspond
  2231.       {
  2232.         if (HrsDepartProg1c == HrsArretProg1c && MinsDepartProg1c == MinsArretProg1c) {return;} // .................... // Si l'heure de départ est égale à l'heure d'arrêt => Retour début loop()
  2233.        
  2234.         if (Hrs == HrsDepartProg1c && Mins == MinsDepartProg1c && Secs < 3) // ........................................ // Si l'heure courante est égale à l'heure de départ du programmateur 1a
  2235.         {
  2236.           digitalWrite(BrocheProg1LedVerte, HIGH);                                                                      // Active la sortie du programmateur 1
  2237.           etatSortieProg1 = true;                                                                                       // Active l'état courant de la sortie du programmateur 1
  2238.         }
  2239.         else if (Hrs == HrsArretProg1c && Mins == MinsArretProg1c && Secs < 3) // ..................................... // Si l'heure courante est égale à l'heure d'arrêt du programmateur 1a
  2240.         {
  2241.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 1
  2242.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 1
  2243.         }
  2244.       }
  2245.     }
  2246.   }
  2247.  
  2248. //**************************************************************************************************************************************************************************
  2249.   if (ModeMinuterieProg2 == 1) // ************************************************************************************* // Si la minuterie 2 est activée
  2250.   {
  2251.     if (millis() - t1DebutTempoMinuterie2 >= DureeMinuterie2_ms && t1DebutTempoMinuterie2 != 0) // ++++++++++++++++++++ // Si la temporisation de la minuterie 2 est écoulée
  2252.     {
  2253.       digitalWrite(BrocheProg2LedVerte, LOW);                                                                           // Désactive la sortie 2
  2254.       ModeMinuterieProg2 = 0;                                                                                           // Définit le mode de la minuterie 2
  2255.       etatSortieProg2 = false;                                                                                          // Désactive l'état courant de la sortie 2
  2256.       LastModeMinuterieProg2 = -1;                                                                                      // Force l'affichage du mode de la minuterie 2
  2257.       t1DebutTempoMinuterie2 = 0;                                                                                       // Réinitialise la temporisation de la minuterie 2 en ms
  2258.     }
  2259.   }
  2260.   else // ************************************************************************************************************* // Si la minuterie 2 n'est psa activée
  2261.   {
  2262. //**************************************************************************************************************************************************************************
  2263.     if (ModeProg2a == 1) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le programmateur 2a est activé
  2264.     {
  2265.       if (IterationProg2a[JourSemaine-1] == 1) // --------------------------------------------------------------------- // Si l'itération du jour de la semaine correspond
  2266.       {
  2267.         if (HrsDepartProg2a == HrsArretProg2a && MinsDepartProg2a == MinsArretProg2a) {return;} // .................... // Si l'heure de départ est égale à l'heure d'arrêt => Retour début loop()
  2268.        
  2269.         if (Hrs == HrsDepartProg2a && Mins == MinsDepartProg2a && Secs < 3) // ........................................ // Si l'heure courante est égale à l'heure de départ du programmateur 2a
  2270.         {
  2271.           digitalWrite(BrocheProg2LedVerte, HIGH);                                                                      // Active la sortie du programmateur 2
  2272.           etatSortieProg2 = true;                                                                                       // Active l'état courant de la sortie du programmateur 2
  2273.         }
  2274.         else if (Hrs == HrsArretProg2a && Mins == MinsArretProg2a && Secs < 3) // ..................................... // Si l'heure courante est égale à l'heure d'arrêt du programmateur 2a
  2275.         {
  2276.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 2
  2277.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 2
  2278.         }
  2279.       }
  2280.     }
  2281.    
  2282.     if (ModeProg2b == 1) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le programmateur 2b est activé
  2283.     {
  2284.       if (IterationProg2b[JourSemaine-1] == 1) // --------------------------------------------------------------------- // Si l'itération du jour de la semaine correspond
  2285.       {
  2286.         if (HrsDepartProg2b == HrsArretProg2b && MinsDepartProg2b == MinsArretProg2b) {return;} // .................... // Si l'heure de départ est égale à l'heure d'arrêt => Retour début loop()
  2287.        
  2288.         if (Hrs == HrsDepartProg2b && Mins == MinsDepartProg2b && Secs < 3) // ........................................ // Si l'heure courante est égale à l'heure de départ du programmateur 2a
  2289.         {
  2290.           digitalWrite(BrocheProg2LedVerte, HIGH);                                                                      // Active la sortie du programmateur 2
  2291.           etatSortieProg2 = true;                                                                                       // Active l'état courant de la sortie du programmateur 2
  2292.         }
  2293.         else if (Hrs == HrsArretProg2b && Mins == MinsArretProg2b && Secs < 3) // ..................................... // Si l'heure courante est égale à l'heure d'arrêt du programmateur 2a
  2294.         {
  2295.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 2
  2296.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 2
  2297.         }
  2298.       }
  2299.     }
  2300.    
  2301.     if (ModeProg2c == 1) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si le programmateur 2c est activé
  2302.     {
  2303.       if (IterationProg2c[JourSemaine-1] == 1) // --------------------------------------------------------------------- // Si l'itération du jour de la semaine correspond
  2304.       {
  2305.         if (HrsDepartProg2c == HrsArretProg2c && MinsDepartProg2c == MinsArretProg2c) {return;} // .................... // Si l'heure de départ est égale à l'heure d'arrêt => Retour début loop()
  2306.        
  2307.         if (Hrs == HrsDepartProg2c && Mins == MinsDepartProg2c && Secs < 3) // ........................................ // Si l'heure courante est égale à l'heure de départ du programmateur 2a
  2308.         {
  2309.           digitalWrite(BrocheProg2LedVerte, HIGH);                                                                      // Active la sortie du programmateur 2
  2310.           etatSortieProg2 = true;                                                                                       // Active l'état courant de la sortie du programmateur 2
  2311.         }
  2312.         else if (Hrs == HrsArretProg2c && Mins == MinsArretProg2c && Secs < 3) // ..................................... // Si l'heure courante est égale à l'heure d'arrêt du programmateur 2a
  2313.         {
  2314.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 2
  2315.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 2
  2316.         }
  2317.       }
  2318.     }
  2319.   }
  2320.  
  2321. //**************************************************************************************************************************************************************************
  2322.   if (ModeThermostat1 == 1 && ModeMinuterieProg1 == 0) // ************************************************************* // Si le thermostat 1 est activé et Si la minuterie 1 est désactivée
  2323.   {
  2324.     if (temperatureCourante < temperatureThermostat1 - 0.5) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la température courante est inférieure à la température du thermostat - 0.5
  2325.     {
  2326.       if (!etatSortieProg1) // ---------------------------------------------------------------------------------------- // Si la sortie 1 n'est pas activée
  2327.       {
  2328.         digitalWrite(BrocheProg1LedVerte, HIGH);                                                                        // Active la sortie 1
  2329.         etatSortieProg1 = true;                                                                                         // Active l'état courant de la sortie 1
  2330.       }
  2331.     }
  2332.     else if (temperatureCourante > temperatureThermostat1 + 0.5) // +++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la température courante est supérieure à la température du thermostat + 0.5
  2333.     {
  2334.       if (etatSortieProg1) // ----------------------------------------------------------------------------------------- // Si la sortie 1 est activée
  2335.       {
  2336.         digitalWrite(BrocheProg1LedVerte, LOW);                                                                         // Désactive la sortie 1
  2337.         etatSortieProg1 = false;                                                                                        // Désactive l'état courant de la sortie 1
  2338.       }
  2339.     }
  2340.   }
  2341.  
  2342. //**************************************************************************************************************************************************************************
  2343.   if (ModeThermostat2 == 1 && ModeMinuterieProg2 == 0) // ************************************************************* // Si le thermostat 2 est activé et Si la minuterie 2 est désactivée
  2344.   {
  2345.     if (temperatureCourante < temperatureThermostat2 - 0.5) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la température courante est inférieure à la température du thermostat - 0.5
  2346.     {
  2347.       if (!etatSortieProg2) // ---------------------------------------------------------------------------------------- // Si la sortie 2 n'est pas activée
  2348.       {
  2349.         digitalWrite(BrocheProg2LedVerte, HIGH);                                                                        // Active la sortie 2
  2350.         etatSortieProg2 = true;                                                                                         // Active l'état courant de la sortie 2
  2351.       }
  2352.     }
  2353.     else if (temperatureCourante > temperatureThermostat2 + 0.5) // +++++++++++++++++++++++++++++++++++++++++++++++++++ // Si la température courante est supérieure à la température du thermostat + 0.5
  2354.     {
  2355.       if (etatSortieProg2) // ----------------------------------------------------------------------------------------- // Si la sortie 2 est activée
  2356.       {
  2357.         digitalWrite(BrocheProg2LedVerte, LOW);                                                                         // Désactive la sortie 2
  2358.         etatSortieProg2 = false;                                                                                        // Désactive l'état courant de la sortie 2
  2359.       }
  2360.     }
  2361.   }
  2362.  
  2363. //**************************************************************************************************************************************************************************
  2364.   etatBPONOFFProg1 = digitalRead(BrocheBPONOFFProg1); // ************************************************************** // Lit le bouton poussoir "BPONOFFProg1"
  2365.   if (LastetatBPONOFFProg1 != etatBPONOFFProg1) // ******************************************************************** // Si l'état du bouton poussoir "BPONOFFProg1" a changé
  2366.   {
  2367.     if (etatBPONOFFProg1 == LOW && LastetatBPONOFFProg1 == HIGH) // +++++++++++++++++++++++++++++++++++++++++++++++++++ // Si front descendant sur "BPONOFFProg1"
  2368.     {
  2369.       Buzzer(3, 0, 1);                                                                                                  // Active le buzzer 3ms
  2370.       if (etatSortieProg1 == true) // --------------------------------------------------------------------------------- // Si l'état courant de la sortie du programmateur 1 est activé
  2371.       {
  2372.         digitalWrite(BrocheProg1LedVerte, LOW);                                                                         // Désactive la sortie du programmateur 1
  2373.         etatSortieProg1 = false;                                                                                        // Désactive l'état courant de la sortie du programmateur 1
  2374.       }
  2375.       else if (etatSortieProg1 == false) // --------------------------------------------------------------------------- // Si l'état courant de la sortie du programmateur 1 est désactivé
  2376.       {
  2377.         digitalWrite(BrocheProg1LedVerte, HIGH);                                                                        // Active la sortie du programmateur 1
  2378.         etatSortieProg1 = true;                                                                                         // Active l'état courant de la sortie du programmateur 1
  2379.       }
  2380.       LastetatBPONOFFProg1 = etatBPONOFFProg1;                                                                          // Mémorise le dernier état courant de "BPONOFFProg1"
  2381.     }
  2382.     else {LastetatBPONOFFProg1 = HIGH;} // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si front montant sur "BPONOFFProg1"
  2383.   }
  2384.  
  2385. //**************************************************************************************************************************************************************************
  2386.   etatBPONOFFProg2 = digitalRead(BrocheBPONOFFProg2); // ************************************************************** // Lit le bouton poussoir "BPONOFFProg2"
  2387.   if (LastetatBPONOFFProg2 != etatBPONOFFProg2) // ******************************************************************** // Si l'état du bouton poussoir "BPONOFFProg2" a changé
  2388.   {
  2389.     if (etatBPONOFFProg2 == LOW && LastetatBPONOFFProg2 == HIGH) // +++++++++++++++++++++++++++++++++++++++++++++++++++ // Si front descendant sur "BPONOFFProg2"
  2390.     {
  2391.       Buzzer(3, 0, 1);                                                                                                  // Active le buzzer 3ms
  2392.       if (etatSortieProg2 == true) // --------------------------------------------------------------------------------- // Si l'état courant de la sortie du programmateur 2 est activé
  2393.       {
  2394.         digitalWrite(BrocheProg2LedVerte, LOW);                                                                         // Désactive la sortie du programmateur 2
  2395.         etatSortieProg2 = false;                                                                                        // Désactive l'état courant de la sortie du programmateur 2
  2396.       }
  2397.       else if (etatSortieProg2 == false) // --------------------------------------------------------------------------- // Si l'état courant de la sortie du programmateur 2 est désactivé
  2398.       {
  2399.         digitalWrite(BrocheProg2LedVerte, HIGH);                                                                        // Active la sortie du programmateur 2
  2400.         etatSortieProg2 = true;                                                                                         // Active l'état courant de la sortie du programmateur 2
  2401.       }
  2402.       LastetatBPONOFFProg2 = etatBPONOFFProg2;                                                                          // Mémorise le dernier état courant de "BPONOFFProg2"
  2403.     }
  2404.     else {LastetatBPONOFFProg2 = HIGH;} // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Si front montant sur "BPONOFFProg2"
  2405.   }
  2406.  
  2407. //**************************************************************************************************************************************************************************
  2408. }
  2409.  
  2410. //**************************************************************************************************************************************************************************
  2411. //*** Fonction Gestion Buzzer **********************************************************************************************************************************************
  2412. //**************************************************************************************************************************************************************************
  2413. void Buzzer (int TempsH, int TempsL, int nb)                                                                            // TempsH => délai buzzer ON, TempsL => délai buzzer OFF, nb => nombre de bips
  2414. {
  2415.   for (int x = 1; x <= nb; x++) // ************************************************************************************ // Boucle le nombre de fois voulu passé par l'argument "int nb"
  2416.   {
  2417.     digitalWrite(BrocheBuzzer, HIGH);                                                                                   // Active le buzzer
  2418.     delay (TempsH);                                                                                                     // Temporisation à l'état haut du buzzer pendant la durée passée par l'argument "int TempsH"
  2419.     digitalWrite(BrocheBuzzer, LOW);                                                                                    // Désactive le buzzer
  2420.     delay (TempsL);                                                                                                     // Temporisation à l'état bas du buzzer pendant la durée passée par l'argument "int TempsL"
  2421.   }
  2422. }
  2423.  
  2424. //**************************************************************************************************************************************************************************
  2425. //*** Fonction de la Gestion du Module RTC DS3234 **************************************************************************************************************************
  2426. //**************************************************************************************************************************************************************************
  2427. void FonctionLectureDS3234 ()
  2428. {
  2429.   rtc.update();                                                                                                         // Lit l'heure et la date dans le module RTC DS3234
  2430.   Hrs = rtc.hour(); Mins = rtc.minute(); Secs = rtc.second();                                                           // Récupère les heures, les minutes et les secondes courantes
  2431.   JourSemaine = rtc.day(); Jour = rtc.date(); Mois = rtc.month(); Annee = rtc.year();                                   // Récupère la date courante
  2432.   //Serial.println(Hrs); // Débug
  2433. }
  2434.  
  2435. //*************************************************************************************************************************************************************************
  2436. //*** Fonction Gestion Tactile de l'écran TFT *****************************************************************************************************************************
  2437. //*************************************************************************************************************************************************************************
  2438. void GestionTactile ()
  2439. {
  2440.   uint16_t xpos, ypos;                                                                                                  // Coordonnées de l'écran TFT
  2441.  
  2442.   tp = ts.getPoint();                                                                                                   // Lit les coordonnées de pression sur l'écran TFT
  2443.  
  2444.   pinMode(XM, OUTPUT);                                                                                                  // Reconfigure les broches en sorties pour la fonction tactile
  2445.   pinMode(YP, OUTPUT);
  2446.   pinMode(XP, OUTPUT);
  2447.   pinMode(YM, OUTPUT);
  2448.  
  2449.   //Serial.print(tp.y); Serial.print(' ');
  2450.   //Serial.print(tp.x); Serial.print(' '); Serial.println(tp.z);
  2451.  
  2452.   if (tp.z > PressionMin && tp.z < PressionMax) // ******************************************************************** // Niveau de pression correct
  2453.   {
  2454.     xpos = map(tp.y, TS_LEFT, TS_RT, tft.width(), 0);                                                                   // Convertit les coordonnées annalogiques tp.x et tp.y
  2455.     ypos = map(tp.x, TS_TOP, TS_BOT, tft.height(), 0);
  2456.    
  2457.     Serial.print(xpos); Serial.print(' '); Serial.println(ypos); // Débug
  2458.  
  2459. //**************************************************************************************************************************************************************************
  2460.     if (PageCourante == 0) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 0 => Page Principale
  2461.     {
  2462.       if (millis() - tempoPression >= 5000 && tempoPression != 0 || tempoPression == 0) // ---------------------------- // Si la temporisation entre deux pressions est écoulée ou Si elle est égale à 0
  2463.       {
  2464.         if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // .................................................. // Pression sur la Touche ">" ......................
  2465.         {
  2466.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2467.           PageCourante = PageCourante + 10;                                                                             // Modifie la Page courante
  2468.           if (PageCourante > 20) {PageCourante = 0;}                                                                    // Borne la Page courante
  2469.           FonctionReinitVariablesPages(PageCourante);                                                                   // Appelle la fonction pour forcer l'affichage des informations des Pages
  2470.         }
  2471.         else if (xpos > 0 && xpos < 18 && ypos > 112 && ypos < 155) // ................................................ // Pression sur la Touche "<" ......................
  2472.         {
  2473.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2474.           PageCourante = PageCourante - 10;                                                                             // Modifie la Page courante
  2475.           if (PageCourante < 0) {PageCourante = 20;}                                                                    // Borne la Page courante
  2476.           FonctionReinitVariablesPages(PageCourante);                                                                   // Appelle la fonction pour forcer l'affichage des informations des Pages
  2477.         }
  2478.         else if (xpos > 40 && xpos < 375 && ypos > 56 && ypos < 126) // ............................................... // Pression sur l'heure courante ...................
  2479.         {
  2480.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2481.           PageCourante = 500;                                                                                           // Modifie la Page courante => Réglage heure courante
  2482.           HrsReglages = Hrs;                                                                                            // Transfère les heures courantes dans les heures courantes de réglages
  2483.           MinsReglages = Mins;                                                                                          // Transfère les minutes courantes dans les heures courantes de réglages
  2484.         }
  2485.         else if (xpos > 75 && xpos < 340 && ypos > 138 && ypos < 180) // .............................................. // Pression sur la date courante ...................
  2486.         {
  2487.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2488.           PageCourante = 501;                                                                                           // Modifie la Page courante => Réglage heure courante
  2489.           JourSemaineReglages = JourSemaine;                                                                            // Transfère le jour de la semaine courant dans la variable de réglages
  2490.           JourReglages = Jour;                                                                                          // Transfère le jour courant dans la variable de réglages
  2491.           MoisReglages = Mois;                                                                                          // Transfère le mois courant dans la variable de réglages
  2492.           AnneeReglages = Annee;                                                                                        // Transfère l'année courante dans la variable de réglages
  2493.         }
  2494.        
  2495.         tempoPression = millis();                                                                                       // (Dé)Redémarre la temporisation entre deux pression
  2496.       }
  2497.     }
  2498.  
  2499. //**************************************************************************************************************************************************************************
  2500.     else if (PageCourante == 500) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 500 => Réglage heure courante
  2501.     {
  2502.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Courantes ----------
  2503.       {
  2504.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2505.         HrsReglages++; if (HrsReglages > 23) {HrsReglages = 0;}                                                         // Modifie les heures courantes de réglages
  2506.       }
  2507.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "-" Hrs Courantes ----------
  2508.       {
  2509.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2510.         HrsReglages--; if (HrsReglages < 0) {HrsReglages = 24;}                                                         // Modifie les heures courantes de réglages
  2511.       }
  2512.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Courantes ---------
  2513.       {
  2514.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2515.         MinsReglages++; if (MinsReglages > 59) {MinsReglages = 0;}                                                      // Modifie les minutes courantes de réglages
  2516.       }
  2517.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "-" Mins Courantes ---------
  2518.       {
  2519.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2520.         MinsReglages--; if (MinsReglages < 0) {MinsReglages = 59;}                                                      // Modifie les Minutes d'Arrêt de réglages
  2521.       }
  2522.       else if (xpos > 0 && xpos < 25 && ypos > 205 && ypos < 240) // -------------------------------------------------- // Pression sur l'icone "OK" -----------------------
  2523.       {
  2524.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2525.         Hrs = HrsReglages;                                                                                              // Transfère la variable temporaire de réglage dans les heures courantes
  2526.         Mins = MinsReglages;                                                                                            // Transfère la variable temporaire de réglage dans les minutes courantes
  2527.         rtc.setTime(Secs, Mins, Hrs, JourSemaine, Jour, Mois, Annee);                                                   // Réglage Heure / Date (Secs, Minutes, Heures, Jour de la semaine, Jour du mois, Mois, Année)
  2528.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2529.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2530.       }
  2531.       else if (xpos > 392 && xpos < 435 && ypos > 205 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "X" ------------------------
  2532.       {
  2533.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2534.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2535.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2536.       }
  2537.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 500 ------------
  2538.       {
  2539.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2540.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2541.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  2542.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2543.       }
  2544.     }
  2545.  
  2546. //**************************************************************************************************************************************************************************
  2547.     else if (PageCourante == 501) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 501 => Réglage de la date courante
  2548.     {
  2549.       if (xpos > 138 && xpos < 175 && ypos > 108 && ypos < 135) // ---------------------------------------------------- // Pression sur l'icone "+" Jour -------------------
  2550.       {
  2551.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2552.         JourReglages++; if (JourReglages > 31) {JourReglages = 1;}                                                      // Modifie les jours courants de réglages
  2553.       }
  2554.       else if (xpos > 313 && xpos < 347 && ypos > 108 && ypos < 135) // ----------------------------------------------- // Pression sur l'icone "-" Jour -------------------
  2555.       {
  2556.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2557.         JourReglages--; if (JourReglages < 0) {JourReglages = 31;}                                                      // Modifie les les jours courants de réglages
  2558.       }
  2559.       else if (xpos > 138 && xpos < 175 && ypos > 159 && ypos < 190) // ----------------------------------------------- // Pression sur l'icone "+" Mois -------------------
  2560.       {
  2561.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2562.         MoisReglages++; if (MoisReglages > 12) {MoisReglages = 1;}                                                      // Modifie les mois courants de réglages
  2563.       }
  2564.       else if (xpos > 313 && xpos < 347 && ypos > 159 && ypos < 190) // ----------------------------------------------- // Pression sur l'icone "-" Mois -------------------
  2565.       {
  2566.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2567.         MoisReglages--; if (MoisReglages < 0) {MoisReglages = 12;}                                                      // Modifie les mois courants de réglages
  2568.       }
  2569.       else if (xpos > 138 && xpos < 175 && ypos > 216 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "+" Année ------------------
  2570.       {
  2571.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2572.         AnneeReglages++; if (AnneeReglages > 99) {AnneeReglages = 10;}                                                  // Modifie les années courantes de réglages
  2573.       }
  2574.       else if (xpos > 313 && xpos < 347 && ypos > 216 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "-" Mois -------------------
  2575.       {
  2576.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2577.         AnneeReglages--; if (AnneeReglages < 10) {AnneeReglages = 99;}                                                  // Modifie les années courantes de réglages
  2578.       }
  2579.       else if (xpos > 0 && xpos < 25 && ypos > 205 && ypos < 240) // -------------------------------------------------- // Pression sur l'icone "OK" -----------------------
  2580.       {
  2581.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2582.         JourSemaine = JourSemaineReglages;                                                                              // Transfère la variable temporaire de réglage dans le jour de la semaine
  2583.         Jour = JourReglages;                                                                                            // Transfère la variable temporaire de réglage dans le jour
  2584.         Mois = MoisReglages;                                                                                            // Transfère la variable temporaire de réglage dans le mois
  2585.         Annee = AnneeReglages;                                                                                          // Transfère la variable temporaire de réglage dans l'annéé
  2586.         rtc.setTime(Secs, Mins, Hrs, JourSemaine, Jour, Mois, Annee);                                                   // Réglage Heure / Date (Secs, Minutes, Heures, Jour de la semaine, Jour du mois, Mois, Année)
  2587.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2588.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2589.       }
  2590.       else if (xpos > 392 && xpos < 435 && ypos > 205 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "X" ------------------------
  2591.       {
  2592.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2593.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2594.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2595.       }
  2596.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 501 ------------
  2597.       {
  2598.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2599.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2600.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  2601.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2602.       }
  2603.     }
  2604.  
  2605. //**************************************************************************************************************************************************************************
  2606.     else if (PageCourante == 10) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 10 => Prog 1a
  2607.     {
  2608.       if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ---------------------------------------------------- // Pression sur la Touche ">" ----------------------
  2609.       {
  2610.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2611.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  2612.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  2613.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2614.       }
  2615.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  2616.       {
  2617.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2618.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  2619.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  2620.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2621.       }
  2622.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 10 -------------
  2623.       {
  2624.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2625.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2626.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  2627.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2628.       }
  2629.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  2630.       {
  2631.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2632.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  2633.         if (PageCourante < 10) {PageCourante = 14;}                                                                     // Borne la Page courante
  2634.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2635.       }
  2636.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  2637.       {
  2638.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2639.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  2640.         if (PageCourante > 14) {PageCourante = 10;}                                                                     // Borne la Page courante
  2641.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2642.       }
  2643.       else if (xpos > 230 && xpos < 380 && ypos > 56 && ypos < 124) // ------------------------------------------------ // Pression sur l'heure de départ ou d'arrêt -------
  2644.       {
  2645.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2646.         PageCourante = 110;                                                                                             // Définit la Page courante 110
  2647.         HrsDepartReglages = HrsDepartProg1a;                                                                            // Transfère les heures de départ du programmateur 1a dans la variable temporaire de réglage
  2648.         MinsDepartReglages = MinsDepartProg1a;                                                                          // Transfère les minutes de départ du programmateur 1a dans la variable temporaire de réglage
  2649.         HrsArretReglages = HrsArretProg1a;                                                                              // Transfère les heures d'arrêt du programmateur 1a dans la variable temporaire de réglage
  2650.         MinsArretReglages = MinsArretProg1a;                                                                            // Transfère les minutes d'arrêt du programmateur 1a dans la variable temporaire de réglage
  2651.         LastMins = -1;                                                                                                  // Force l'affichage de l'heure sur la Page 110
  2652.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2653.       }
  2654.       else if (xpos > 13 && xpos < 50 && ypos > 147 && ypos < 185) // ------------------------------------------------- // Pression sur la Touche "D" ----------------------
  2655.       {
  2656.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2657.         IterationProg1a[0] = !IterationProg1a[0];                                                                       // Inverse l'itération 0 du programmateur 1a
  2658.         EEPROM.put(8, IterationProg1a[0]);                                                                              // Mémorise l'itération en EEPROM
  2659.         LastAffichageIterationProg1a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2660.       }
  2661.       else if (xpos > 68 && xpos < 111 && ypos > 147 && ypos < 185) // ------------------------------------------------ // Pression sur la Touche "L" ----------------------
  2662.       {
  2663.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2664.         IterationProg1a[1] = !IterationProg1a[1];                                                                       // Inverse l'itération 1 du programmateur 1a
  2665.         EEPROM.put(10, IterationProg1a[1]);                                                                             // Mémorise l'itération en EEPROM
  2666.         LastAffichageIterationProg1a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2667.       }
  2668.       else if (xpos > 129 && xpos < 168 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  2669.       {
  2670.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2671.         IterationProg1a[2] = !IterationProg1a[2];                                                                       // Inverse l'itération 2 du programmateur 1a
  2672.         EEPROM.put(12, IterationProg1a[2]);                                                                             // Mémorise l'itération en EEPROM
  2673.         LastAffichageIterationProg1a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2674.       }
  2675.       else if (xpos > 190 && xpos < 230 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  2676.       {
  2677.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2678.         IterationProg1a[3] = !IterationProg1a[3];                                                                       // Inverse l'itération 3 du programmateur 1a
  2679.         EEPROM.put(14, IterationProg1a[3]);                                                                             // Mémorise l'itération en EEPROM
  2680.         LastAffichageIterationProg1a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2681.       }
  2682.       else if (xpos > 250 && xpos < 290 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "J" ----------------------
  2683.       {
  2684.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2685.         IterationProg1a[4] = !IterationProg1a[4];                                                                       // Inverse l'itération 4 du programmateur 1a
  2686.         EEPROM.put(16, IterationProg1a[4]);                                                                             // Mémorise l'itération en EEPROM
  2687.         LastAffichageIterationProg1a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2688.       }
  2689.       else if (xpos > 306 && xpos < 350 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "V" ----------------------
  2690.       {
  2691.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2692.         IterationProg1a[5] = !IterationProg1a[5];                                                                       // Inverse l'itération 5 du programmateur 1a
  2693.         EEPROM.put(18, IterationProg1a[5]);                                                                             // Mémorise l'itération en EEPROM
  2694.         LastAffichageIterationProg1a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2695.       }
  2696.       else if (xpos > 367 && xpos < 405 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "S" ----------------------
  2697.       {
  2698.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2699.         IterationProg1a[6] = !IterationProg1a[6];                                                                       // Inverse l'itération 6 du programmateur 1a
  2700.         EEPROM.put(20, IterationProg1a[6]);                                                                             // Mémorise l'itération en EEPROM
  2701.         LastAffichageIterationProg1a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2702.       }
  2703.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  2704.       {
  2705.         if (ModeProg1a != 0) // ....................................................................................... // Si "ModeProg1a" est différent de 0
  2706.         {
  2707.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2708.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 1
  2709.           ModeProg1a = 0;                                                                                               // Définit le mode du programmateur 1a
  2710.           EEPROM.put(22, ModeProg1a);                                                                                   // Mémorise le mode en EEPROM
  2711.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 1
  2712.           LastModeProg1a = -1;                                                                                          // Force l'affichage du mode du programmateur 1a
  2713.         }
  2714.       }
  2715.       else if (xpos > 153 && xpos < 250 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "AUTO" -------------------
  2716.       {
  2717.         if (ModeProg1a != 1) // ....................................................................................... // Si "ModeProg1a" est différent de 1
  2718.         {
  2719.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2720.           ModeProg1a = 1;                                                                                               // Définit le mode du programmateur 1a
  2721.           EEPROM.put(22, ModeProg1a);                                                                                   // Mémorise le mode en EEPROM
  2722.           LastModeProg1a = -1;                                                                                          // Force l'affichage du mode du programmateur 1a
  2723.         }
  2724.       }
  2725.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  2726.       {
  2727.         if (ModeProg1a != 2) // ....................................................................................... // Si "ModeProg1a" est différent de 2
  2728.         {
  2729.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2730.           digitalWrite(BrocheProg1LedVerte, HIGH);                                                                      // Active la sortie du programmateur 1
  2731.           ModeProg1a = 2;                                                                                               // Définit le mode du programmateur 1a
  2732.           EEPROM.put(22, ModeProg1a);                                                                                   // Mémorise le mode en EEPROM
  2733.           etatSortieProg1 = true;                                                                                       // Active l'état courant de la sortie du programmateur 1
  2734.           LastModeProg1a = -1;                                                                                          // Force l'affichage du mode du programmateur 1a
  2735.         }
  2736.       }
  2737.     }
  2738.  
  2739. //**************************************************************************************************************************************************************************
  2740.     else if (PageCourante == 11) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 11 => Prog 1b
  2741.     {
  2742.       if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ---------------------------------------------------- // Pression sur la Touche ">" ----------------------
  2743.       {
  2744.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2745.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  2746.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  2747.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2748.       }
  2749.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  2750.       {
  2751.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2752.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  2753.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  2754.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2755.       }
  2756.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 11 -------------
  2757.       {
  2758.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2759.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2760.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  2761.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2762.       }
  2763.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  2764.       {
  2765.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2766.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  2767.         if (PageCourante < 10) {PageCourante = 14;}                                                                     // Borne la Page courante
  2768.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2769.       }
  2770.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  2771.       {
  2772.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2773.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  2774.         if (PageCourante > 14) {PageCourante = 10;}                                                                     // Borne la Page courante
  2775.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2776.       }
  2777.       else if (xpos > 230 && xpos < 380 && ypos > 56 && ypos < 124) // ------------------------------------------------ // Pression sur l'heure de départ ou d'arrêt -------
  2778.       {
  2779.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2780.         PageCourante = 111;                                                                                             // Définit la Page courante 111
  2781.         HrsDepartReglages = HrsDepartProg1b;                                                                            // Transfère les heures de départ du programmateur 1b dans la variable temporaire de réglage
  2782.         MinsDepartReglages = MinsDepartProg1b;                                                                          // Transfère les minutes de départ du programmateur 1b dans la variable temporaire de réglage
  2783.         HrsArretReglages = HrsArretProg1b;                                                                              // Transfère les heures d'arrêt du programmateur 1b dans la variable temporaire de réglage
  2784.         MinsArretReglages = MinsArretProg1b;                                                                            // Transfère les minutes d'arrêt du programmateur 1b dans la variable temporaire de réglage
  2785.         LastMins = -1;                                                                                                  // Force l'affichage de l'heure sur la Page 111
  2786.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2787.       }
  2788.       else if (xpos > 13 && xpos < 50 && ypos > 147 && ypos < 185) // ------------------------------------------------- // Pression sur la Touche "D" ----------------------
  2789.       {
  2790.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2791.         IterationProg1b[0] = !IterationProg1b[0];                                                                       // Inverse l'itération 0 du programmateur 1b
  2792.         EEPROM.put(32, IterationProg1b[0]);                                                                             // Mémorise l'itération en EEPROM
  2793.         LastAffichageIterationProg1b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2794.       }
  2795.       else if (xpos > 68 && xpos < 111 && ypos > 147 && ypos < 185) // ------------------------------------------------ // Pression sur la Touche "L" ----------------------
  2796.       {
  2797.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2798.         IterationProg1b[1] = !IterationProg1b[1];                                                                       // Inverse l'itération 1 du programmateur 1b
  2799.         EEPROM.put(34, IterationProg1b[1]);                                                                             // Mémorise l'itération en EEPROM
  2800.         LastAffichageIterationProg1b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2801.       }
  2802.       else if (xpos > 129 && xpos < 168 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  2803.       {
  2804.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2805.         IterationProg1b[2] = !IterationProg1b[2];                                                                       // Inverse l'itération 2 du programmateur 1b
  2806.         EEPROM.put(36, IterationProg1b[2]);                                                                             // Mémorise l'itération en EEPROM
  2807.         LastAffichageIterationProg1b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2808.       }
  2809.       else if (xpos > 190 && xpos < 230 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  2810.       {
  2811.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2812.         IterationProg1b[3] = !IterationProg1b[3];                                                                       // Inverse l'itération 3 du programmateur 1b
  2813.         EEPROM.put(38, IterationProg1b[3]);                                                                             // Mémorise l'itération en EEPROM
  2814.         LastAffichageIterationProg1b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2815.       }
  2816.       else if (xpos > 250 && xpos < 290 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "J" ----------------------
  2817.       {
  2818.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2819.         IterationProg1b[4] = !IterationProg1b[4];                                                                       // Inverse l'itération 4 du programmateur 1b
  2820.         EEPROM.put(40, IterationProg1b[4]);                                                                             // Mémorise l'itération en EEPROM
  2821.         LastAffichageIterationProg1b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2822.       }
  2823.       else if (xpos > 306 && xpos < 350 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "V" ----------------------
  2824.       {
  2825.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2826.         IterationProg1b[5] = !IterationProg1b[5];                                                                       // Inverse l'itération 5 du programmateur 1b
  2827.         EEPROM.put(42, IterationProg1b[5]);                                                                             // Mémorise l'itération en EEPROM
  2828.         LastAffichageIterationProg1b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2829.       }
  2830.       else if (xpos > 367 && xpos < 405 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "S" ----------------------
  2831.       {
  2832.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2833.         IterationProg1b[6] = !IterationProg1b[6];                                                                       // Inverse l'itération 6 du programmateur 1b
  2834.         EEPROM.put(44, IterationProg1b[6]);                                                                             // Mémorise l'itération en EEPROM
  2835.         LastAffichageIterationProg1b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2836.       }
  2837.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  2838.       {
  2839.         if (ModeProg1b != 0) // ....................................................................................... // Si "ModeProg1b" est différent de 0
  2840.         {
  2841.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2842.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 1
  2843.           ModeProg1b = 0;                                                                                               // Définit le mode du programmateur 1b
  2844.           EEPROM.put(46, ModeProg1b);                                                                                   // Mémorise le mode en EEPROM
  2845.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 1
  2846.           LastModeProg1b = -1;                                                                                          // Force l'affichage du mode du programmateur 1b
  2847.         }
  2848.       }
  2849.       else if (xpos > 153 && xpos < 250 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "AUTO" -------------------
  2850.       {
  2851.         if (ModeProg1b != 1) // ....................................................................................... // Si "ModeProg1b" est différent de 1
  2852.         {
  2853.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2854.           ModeProg1b = 1;                                                                                               // Définit le mode du programmateur 1b
  2855.           EEPROM.put(46, ModeProg1b);                                                                                   // Mémorise le mode en EEPROM
  2856.           LastModeProg1b = -1;                                                                                          // Force l'affichage du mode du programmateur 1b
  2857.         }
  2858.       }
  2859.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  2860.       {
  2861.         if (ModeProg1b != 2) // ....................................................................................... // Si "ModeProg1b" est différent de 2
  2862.         {
  2863.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2864.           digitalWrite(BrocheProg1LedVerte, HIGH);                                                                      // Active la sortie du programmateur 1
  2865.           ModeProg1b = 2;                                                                                               // Définit le mode du programmateur 1b
  2866.           EEPROM.put(46, ModeProg1b);                                                                                   // Mémorise le mode en EEPROM
  2867.           etatSortieProg1 = true;                                                                                       // Active l'état courant de la sortie du programmateur 1
  2868.           LastModeProg1b = -1;                                                                                          // Force l'affichage du mode du programmateur 1b
  2869.         }
  2870.       }
  2871.     }
  2872.  
  2873. //**************************************************************************************************************************************************************************
  2874.     else if (PageCourante == 12) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 12 => Prog 1c
  2875.     {
  2876.       if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ---------------------------------------------------- // Pression sur la Touche ">" ----------------------
  2877.       {
  2878.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2879.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  2880.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  2881.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2882.       }
  2883.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  2884.       {
  2885.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2886.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  2887.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  2888.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2889.       }
  2890.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 12 -------------
  2891.       {
  2892.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2893.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  2894.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  2895.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2896.       }
  2897.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  2898.       {
  2899.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2900.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  2901.         if (PageCourante < 10) {PageCourante = 14;}                                                                     // Borne la Page courante
  2902.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2903.       }
  2904.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  2905.       {
  2906.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2907.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  2908.         if (PageCourante > 14) {PageCourante = 10;}                                                                     // Borne la Page courante
  2909.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2910.       }
  2911.       else if (xpos > 230 && xpos < 380 && ypos > 56 && ypos < 124) // ------------------------------------------------ // Pression sur l'heure de départ ou d'arrêt -------
  2912.       {
  2913.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2914.         PageCourante = 112;                                                                                             // Définit la Page courante 111
  2915.         HrsDepartReglages = HrsDepartProg1c;                                                                            // Transfère les heures de départ du programmateur 1c dans la variable temporaire de réglage
  2916.         MinsDepartReglages = MinsDepartProg1c;                                                                          // Transfère les minutes de départ du programmateur 1c dans la variable temporaire de réglage
  2917.         HrsArretReglages = HrsArretProg1c;                                                                              // Transfère les heures d'arrêt du programmateur 1c dans la variable temporaire de réglage
  2918.         MinsArretReglages = MinsArretProg1c;                                                                            // Transfère les minutes d'arrêt du programmateur 1c dans la variable temporaire de réglage
  2919.         LastMins = -1;                                                                                                  // Force l'affichage de l'heure sur la Page 112
  2920.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  2921.       }
  2922.       else if (xpos > 13 && xpos < 50 && ypos > 147 && ypos < 185) // ------------------------------------------------- // Pression sur la Touche "D" ----------------------
  2923.       {
  2924.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2925.         IterationProg1c[0] = !IterationProg1c[0];                                                                       // Inverse l'itération 0 du programmateur 1c
  2926.         EEPROM.put(56, IterationProg1c[0]);                                                                             // Mémorise l'itération en EEPROM
  2927.         LastAffichageIterationProg1c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2928.       }
  2929.       else if (xpos > 68 && xpos < 111 && ypos > 147 && ypos < 185) // ------------------------------------------------ // Pression sur la Touche "L" ----------------------
  2930.       {
  2931.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2932.         IterationProg1c[1] = !IterationProg1c[1];                                                                       // Inverse l'itération 1 du programmateur 1c
  2933.         EEPROM.put(58, IterationProg1c[1]);                                                                             // Mémorise l'itération en EEPROM
  2934.         LastAffichageIterationProg1c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2935.       }
  2936.       else if (xpos > 129 && xpos < 168 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  2937.       {
  2938.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2939.         IterationProg1c[2] = !IterationProg1c[2];                                                                       // Inverse l'itération 2 du programmateur 1c
  2940.         EEPROM.put(60, IterationProg1c[2]);                                                                             // Mémorise l'itération en EEPROM
  2941.         LastAffichageIterationProg1c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2942.       }
  2943.       else if (xpos > 190 && xpos < 230 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  2944.       {
  2945.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2946.         IterationProg1c[3] = !IterationProg1c[3];                                                                       // Inverse l'itération 3 du programmateur 1c
  2947.         EEPROM.put(62, IterationProg1c[3]);                                                                             // Mémorise l'itération en EEPROM
  2948.         LastAffichageIterationProg1c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2949.       }
  2950.       else if (xpos > 250 && xpos < 290 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "J" ----------------------
  2951.       {
  2952.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2953.         IterationProg1c[4] = !IterationProg1c[4];                                                                       // Inverse l'itération 4 du programmateur 1c
  2954.         EEPROM.put(64, IterationProg1c[4]);                                                                             // Mémorise l'itération en EEPROM
  2955.         LastAffichageIterationProg1c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2956.       }
  2957.       else if (xpos > 306 && xpos < 350 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "V" ----------------------
  2958.       {
  2959.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2960.         IterationProg1c[5] = !IterationProg1c[5];                                                                       // Inverse l'itération 5 du programmateur 1c
  2961.         EEPROM.put(66, IterationProg1c[5]);                                                                             // Mémorise l'itération en EEPROM
  2962.         LastAffichageIterationProg1c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2963.       }
  2964.       else if (xpos > 367 && xpos < 405 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "S" ----------------------
  2965.       {
  2966.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  2967.         IterationProg1c[6] = !IterationProg1c[6];                                                                       // Inverse l'itération 6 du programmateur 1c
  2968.         EEPROM.put(68, IterationProg1c[6]);                                                                             // Mémorise l'itération en EEPROM
  2969.         LastAffichageIterationProg1c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  2970.       }
  2971.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  2972.       {
  2973.         if (ModeProg1c != 0) // ....................................................................................... // Si "ModeProg1b" est différent de 0
  2974.         {
  2975.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2976.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 1
  2977.           ModeProg1c = 0;                                                                                               // Définit le mode du programmateur 1c
  2978.           EEPROM.put(70, ModeProg1c);                                                                                   // Mémorise le mode en EEPROM
  2979.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 1
  2980.           LastModeProg1c = -1;                                                                                          // Force l'affichage du mode du programmateur 1c
  2981.         }
  2982.       }
  2983.       else if (xpos > 153 && xpos < 250 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "AUTO" -------------------
  2984.       {
  2985.         if (ModeProg1c != 1) // ....................................................................................... // Si "ModeProg1c" est différent de 1
  2986.         {
  2987.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2988.           ModeProg1c = 1;                                                                                               // Définit le mode du programmateur 1c
  2989.           EEPROM.put(70, ModeProg1c);                                                                                   // Mémorise le mode en EEPROM
  2990.           LastModeProg1c = -1;                                                                                          // Force l'affichage du mode du programmateur 1c
  2991.         }
  2992.       }
  2993.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  2994.       {
  2995.         if (ModeProg1c != 2) // ....................................................................................... // Si "ModeProg1c" est différent de 2
  2996.         {
  2997.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  2998.           digitalWrite(BrocheProg1LedVerte, HIGH);                                                                      // Active la sortie du programmateur 1
  2999.           ModeProg1c = 2;                                                                                               // Définit le mode du programmateur 1c
  3000.           EEPROM.put(70, ModeProg1c);                                                                                   // Mémorise le mode en EEPROM
  3001.           etatSortieProg1 = true;                                                                                       // Active l'état courant de la sortie du programmateur 1
  3002.           LastModeProg1c = -1;                                                                                          // Force l'affichage du mode du programmateur 1c
  3003.         }
  3004.       }
  3005.     }
  3006.  
  3007. //**************************************************************************************************************************************************************************
  3008.     else if (PageCourante == 13) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 13 => Minuterie Prog 1
  3009.     {
  3010.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Minuterie ----------
  3011.       {
  3012.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3013.         if (ModeMinuterieProg1 == 1)                                                                                    // Si la minuterie 1 est activée
  3014.         {
  3015.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie 1
  3016.           ModeMinuterieProg1 = 0;                                                                                       // Définit le mode de la minuterie 1
  3017.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie 1
  3018.           LastModeMinuterieProg1 = -1;                                                                                  // Force l'affichage du mode de la minuterie 1
  3019.           t1DebutTempoMinuterie1 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 1 en ms
  3020.         }
  3021.         HrsMinuterieReglageProg1++; if (HrsMinuterieReglageProg1 > 23) {HrsMinuterieReglageProg1 = 0;}                  // Modifie les heures de réglages de la minuterie 1
  3022.       }
  3023.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "-" Hrs Minuterie ----------
  3024.       {
  3025.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3026.         if (ModeMinuterieProg1 == 1)                                                                                    // Si la minuterie 1 est activée
  3027.         {
  3028.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie 1
  3029.           ModeMinuterieProg1 = 0;                                                                                       // Définit le mode de la minuterie 1
  3030.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie 1
  3031.           LastModeMinuterieProg1 = -1;                                                                                  // Force l'affichage du mode de la minuterie 1
  3032.           t1DebutTempoMinuterie1 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 1 en ms
  3033.         }
  3034.         HrsMinuterieReglageProg1--; if (HrsMinuterieReglageProg1 < 0) {HrsMinuterieReglageProg1 = 23;}                  // Modifie les heures de réglages de la minuterie 1
  3035.       }
  3036.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Minuterie ---------
  3037.       {
  3038.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3039.         if (ModeMinuterieProg1 == 1)                                                                                    // Si la minuterie 1 est activée
  3040.         {
  3041.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie 1
  3042.           ModeMinuterieProg1 = 0;                                                                                       // Définit le mode de la minuterie 1
  3043.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie 1
  3044.           LastModeMinuterieProg1 = -1;                                                                                  // Force l'affichage du mode de la minuterie 1
  3045.           t1DebutTempoMinuterie1 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 1 en ms
  3046.         }
  3047.         MinsMinuterieReglageProg1++; if (MinsMinuterieReglageProg1 > 59) {MinsMinuterieReglageProg1 = 0;}               // Modifie les minutes de réglages de la minuterie 1
  3048.       }
  3049.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "-" Mins Minuterie ---------
  3050.       {
  3051.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3052.         if (ModeMinuterieProg1 == 1)                                                                                    // Si la minuterie 1 est activée
  3053.         {
  3054.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie 1
  3055.           ModeMinuterieProg1 = 0;                                                                                       // Définit le mode de la minuterie 1
  3056.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie 1
  3057.           LastModeMinuterieProg1 = -1;                                                                                  // Force l'affichage du mode de la minuterie 1
  3058.           t1DebutTempoMinuterie1 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 1 en ms
  3059.         }
  3060.         MinsMinuterieReglageProg1--; if (MinsMinuterieReglageProg1 < 0) {MinsMinuterieReglageProg1 = 59;}               // Modifie les Minutes de réglages de la minuterie 1
  3061.       }
  3062.       else if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ----------------------------------------------- // Pression sur la Touche ">" ----------------------
  3063.       {
  3064.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3065.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  3066.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  3067.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3068.       }
  3069.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  3070.       {
  3071.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3072.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  3073.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  3074.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3075.       }
  3076.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 13 -------------
  3077.       {
  3078.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3079.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3080.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3081.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3082.       }
  3083.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  3084.       {
  3085.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3086.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  3087.         if (PageCourante < 10) {PageCourante = 14;}                                                                     // Borne la Page courante
  3088.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3089.       }
  3090.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  3091.       {
  3092.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3093.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  3094.         if (PageCourante > 14) {PageCourante = 10;}                                                                     // Borne la Page courante
  3095.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3096.       }
  3097.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  3098.       {
  3099.         if (ModeMinuterieProg1 != 0) // ............................................................................... // Si "ModeMinuterieProg1" est différent de 0
  3100.         {
  3101.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3102.           digitalWrite(BrocheProg1LedVerte, LOW);                                                                       // Désactive la sortie 1
  3103.           ModeMinuterieProg1 = 0;                                                                                       // Définit le mode de la minuterie 1
  3104.           etatSortieProg1 = false;                                                                                      // Désactive l'état courant de la sortie 1
  3105.           LastModeMinuterieProg1 = -1;                                                                                  // Force l'affichage du mode de la minuterie 1
  3106.           t1DebutTempoMinuterie1 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 1 en ms
  3107.         }
  3108.       }
  3109.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  3110.       {
  3111.         if (ModeMinuterieProg1 != 1) // ............................................................................... // Si "ModeMinuterieProg1" est différent de 1
  3112.         {
  3113.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3114.           digitalWrite(BrocheProg1LedVerte, HIGH);                                                                      // Active la sortie 1
  3115.           ModeMinuterieProg1 = 1;                                                                                       // Définit le mode de la minuterie 1
  3116.           etatSortieProg1 = true;                                                                                       // Active l'état courant de la sortie 1
  3117.           LastModeMinuterieProg1 = -1;                                                                                  // Force l'affichage du mode de la minuterie 1
  3118.           HrsMinuterieProg1 = HrsMinuterieReglageProg1;                                                                 // Transfère les heures de réglages de la minuterie 1
  3119.           MinsMinuterieProg1 = MinsMinuterieReglageProg1;                                                               // Transfère les minutes de réglages de la minuterie 1
  3120.           DureeMinuterie1_ms = HrsMinuterieProg1*60ul*60ul*1000ul;                                                      // Convertit la durée de la minuterie 1 en ms
  3121.           DureeMinuterie1_ms = DureeMinuterie1_ms + MinsMinuterieProg1*60ul*1000ul;
  3122.           //Serial.println(DureeMinuterie1_ms); // Débug
  3123.           t1DebutTempoMinuterie1 = millis();                                                                            // Démarre la temporisation de la minuterie 1 en ms
  3124.         }
  3125.       }
  3126.     }
  3127.  
  3128. //**************************************************************************************************************************************************************************
  3129.     else if (PageCourante == 14) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 14 => Thermostat 1
  3130.     {
  3131.       if (xpos > 50 && xpos < 90 && ypos > 148 && ypos < 180) // ------------------------------------------------------ // Pression sur l'icone "+" Thermostat -------------
  3132.       {
  3133.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3134.         if (ModeThermostat1 == 1)                                                                                       // Si le thermostat1 est activé
  3135.         {
  3136.           ModeThermostat1 = 0;                                                                                          // Définit le mode du thermostat 1
  3137.           LastModeThermostat1 = -1;                                                                                     // Force l'affichage du mode du thermostat 1
  3138.         }
  3139.         temperatureThermostat1 = temperatureThermostat1 + 0.5;                                                          // Modifie le thermostat 1
  3140.         if (temperatureThermostat1 > 28.0) {temperatureThermostat1 = 15.0;}                                             // Borne le thermostat 1
  3141.       }
  3142.       else if (xpos > 308 && xpos < 344 && ypos > 148 && ypos < 180) // ----------------------------------------------- // Pression sur l'icone "-" Thermostat -------------
  3143.       {
  3144.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3145.         if (ModeThermostat1 == 1)                                                                                       // Si le thermostat est activé
  3146.         {
  3147.           ModeThermostat1 = 0;                                                                                          // Définit le mode du thermostat 1
  3148.           LastModeThermostat1 = -1;                                                                                     // Force l'affichage du mode du thermostat 1
  3149.         }
  3150.         temperatureThermostat1 = temperatureThermostat1 - 0.5;                                                          // Modifie le thermostat 1
  3151.         if (temperatureThermostat1 < 15.0) {temperatureThermostat1 = 28.0;}                                             // Borne le thermostat 1
  3152.       }
  3153.       else if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ----------------------------------------------- // Pression sur la Touche ">" ----------------------
  3154.       {
  3155.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3156.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  3157.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  3158.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3159.       }
  3160.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  3161.       {
  3162.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3163.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  3164.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  3165.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3166.       }
  3167.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 14 -------------
  3168.       {
  3169.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3170.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3171.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3172.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3173.       }
  3174.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  3175.       {
  3176.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3177.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  3178.         if (PageCourante < 10) {PageCourante = 14;}                                                                     // Borne la Page courante
  3179.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3180.       }
  3181.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  3182.       {
  3183.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3184.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  3185.         if (PageCourante > 14) {PageCourante = 10;}                                                                     // Borne la Page courante
  3186.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3187.       }
  3188.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  3189.       {
  3190.         if (ModeThermostat1 != 0) // .................................................................................. // Si "ModeThermostat1" est différent de 0
  3191.         {
  3192.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3193.           ModeThermostat1 = 0;                                                                                          // Définit le mode du thermostat 1
  3194.           LastModeThermostat1 = -1;                                                                                     // Force l'affichage du mode du thermostat 1
  3195.         }
  3196.       }
  3197.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  3198.       {
  3199.         if (ModeThermostat1 != 1) // .................................................................................. // Si "ModeThermostat1" est différent de 1
  3200.         {
  3201.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3202.           ModeThermostat1 = 1;                                                                                          // Définit le mode du thermostat 1
  3203.           LastModeThermostat1 = -1;                                                                                     // Force l'affichage du mode du thermostat 1
  3204.         }
  3205.       }
  3206.     }
  3207.  
  3208. //**************************************************************************************************************************************************************************
  3209.     else if (PageCourante == 20) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 20 => Prog 2a
  3210.     {
  3211.       if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ---------------------------------------------------- // Pression sur la Touche ">" ----------------------
  3212.       {
  3213.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3214.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  3215.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  3216.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3217.       }
  3218.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  3219.       {
  3220.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3221.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  3222.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  3223.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3224.       }
  3225.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 20 -------------
  3226.       {
  3227.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3228.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3229.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3230.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3231.       }
  3232.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  3233.       {
  3234.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3235.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  3236.         if (PageCourante < 20) {PageCourante = 24;}                                                                     // Borne la Page courante
  3237.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3238.       }
  3239.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  3240.       {
  3241.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3242.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  3243.         if (PageCourante > 24) {PageCourante = 20;}                                                                     // Borne la Page courante
  3244.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3245.       }
  3246.       else if (xpos > 230 && xpos < 380 && ypos > 56 && ypos < 124) // ------------------------------------------------ // Pression sur l'heure de départ ou d'arrêt -------
  3247.       {
  3248.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3249.         PageCourante = 210;                                                                                             // Définit la Page courante 210
  3250.         HrsDepartReglages = HrsDepartProg2a;                                                                            // Transfère les heures de départ du programmateur 2a dans la variable temporaire de réglage
  3251.         MinsDepartReglages = MinsDepartProg2a;                                                                          // Transfère les minutes de départ du programmateur 2a dans la variable temporaire de réglage
  3252.         HrsArretReglages = HrsArretProg2a;                                                                              // Transfère les heures d'arrêt du programmateur 2a dans la variable temporaire de réglage
  3253.         MinsArretReglages = MinsArretProg2a;                                                                            // Transfère les minutes d'arrêt du programmateur 2a dans la variable temporaire de réglage
  3254.         LastMins = -1;                                                                                                  // Force l'affichage de l'heure sur la Page 210
  3255.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3256.       }
  3257.       else if (xpos > 13 && xpos < 50 && ypos > 147 && ypos < 185) // ------------------------------------------------- // Pression sur la Touche "D" ----------------------
  3258.       {
  3259.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3260.         IterationProg2a[0] = !IterationProg2a[0];                                                                       // Inverse l'itération 0 du programmateur 2a
  3261.         EEPROM.put(80, IterationProg2a[0]);                                                                             // Mémorise l'itération en EEPROM
  3262.         LastAffichageIterationProg2a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3263.       }
  3264.       else if (xpos > 68 && xpos < 111 && ypos > 147 && ypos < 185) // ------------------------------------------------ // Pression sur la Touche "L" ----------------------
  3265.       {
  3266.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3267.         IterationProg2a[1] = !IterationProg2a[1];                                                                       // Inverse l'itération 1 du programmateur 2a
  3268.         EEPROM.put(82, IterationProg2a[1]);                                                                             // Mémorise l'itération en EEPROM
  3269.         LastAffichageIterationProg2a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3270.       }
  3271.       else if (xpos > 129 && xpos < 168 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  3272.       {
  3273.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3274.         IterationProg2a[2] = !IterationProg2a[2];                                                                       // Inverse l'itération 2 du programmateur 2a
  3275.         EEPROM.put(84, IterationProg2a[2]);                                                                             // Mémorise l'itération en EEPROM
  3276.         LastAffichageIterationProg2a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3277.       }
  3278.       else if (xpos > 190 && xpos < 230 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  3279.       {
  3280.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3281.         IterationProg2a[3] = !IterationProg2a[3];                                                                       // Inverse l'itération 3 du programmateur 2a
  3282.         EEPROM.put(86, IterationProg2a[3]);                                                                             // Mémorise l'itération en EEPROM
  3283.         LastAffichageIterationProg2a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3284.       }
  3285.       else if (xpos > 250 && xpos < 290 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "J" ----------------------
  3286.       {
  3287.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3288.         IterationProg2a[4] = !IterationProg2a[4];                                                                       // Inverse l'itération 4 du programmateur 2a
  3289.         EEPROM.put(88, IterationProg2a[4]);                                                                             // Mémorise l'itération en EEPROM
  3290.         LastAffichageIterationProg2a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3291.       }
  3292.       else if (xpos > 306 && xpos < 350 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "V" ----------------------
  3293.       {
  3294.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3295.         IterationProg2a[5] = !IterationProg2a[5];                                                                       // Inverse l'itération 5 du programmateur 2a
  3296.         EEPROM.put(90, IterationProg2a[5]);                                                                             // Mémorise l'itération en EEPROM
  3297.         LastAffichageIterationProg2a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3298.       }
  3299.       else if (xpos > 367 && xpos < 405 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "S" ----------------------
  3300.       {
  3301.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3302.         IterationProg2a[6] = !IterationProg2a[6];                                                                       // Inverse l'itération 6 du programmateur 2a
  3303.         EEPROM.put(92, IterationProg2a[6]);                                                                             // Mémorise l'itération en EEPROM
  3304.         LastAffichageIterationProg2a = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3305.       }
  3306.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  3307.       {
  3308.         if (ModeProg2a != 0) // ....................................................................................... // Si "ModeProg2a" est différent de 0
  3309.         {
  3310.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3311.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 2
  3312.           ModeProg2a = 0;                                                                                               // Définit le mode du programmateur 2a
  3313.           EEPROM.put(94, ModeProg2a);                                                                                   // Mémorise le mode en EEPROM
  3314.           etatSortieProg2 = true;                                                                                       // Désactive l'état courant de la sortie du programmateur 2
  3315.           LastModeProg2a = -1;                                                                                          // Force l'affichage du mode du programmateur 2a
  3316.         }
  3317.       }
  3318.       else if (xpos > 153 && xpos < 250 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "AUTO" -------------------
  3319.       {
  3320.         if (ModeProg2a != 1) // ....................................................................................... // Si "ModeProg2a" est différent de 1
  3321.         {
  3322.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3323.           ModeProg2a = 1;                                                                                               // Définit le mode du programmateur 2a
  3324.           EEPROM.put(94, ModeProg2a);                                                                                   // Mémorise le mode en EEPROM
  3325.           LastModeProg2a = -1;                                                                                          // Force l'affichage du mode du programmateur 2a
  3326.         }
  3327.       }
  3328.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  3329.       {
  3330.         if (ModeProg2a != 2) // ....................................................................................... // Si "ModeProg2a" est différent de 2
  3331.         {
  3332.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3333.           digitalWrite(BrocheProg2LedVerte, HIGH);                                                                      // Active la sortie du programmateur 2
  3334.           ModeProg2a = 2;                                                                                               // Définit le mode du programmateur 2a
  3335.           EEPROM.put(94, ModeProg2a);                                                                                   // Mémorise le mode en EEPROM
  3336.           etatSortieProg2 = true;                                                                                       // Active l'état courant de la sortie du programmateur 2
  3337.           LastModeProg2a = -1;                                                                                          // Force l'affichage du mode du programmateur 2a
  3338.         }
  3339.       }
  3340.     }
  3341.  
  3342. //**************************************************************************************************************************************************************************
  3343.     else if (PageCourante == 21) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 20 => Prog 2b
  3344.     {
  3345.       if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ---------------------------------------------------- // Pression sur la Touche ">" ----------------------
  3346.       {
  3347.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3348.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  3349.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  3350.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3351.       }
  3352.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  3353.       {
  3354.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3355.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  3356.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  3357.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3358.       }
  3359.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 21 -------------
  3360.       {
  3361.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3362.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3363.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3364.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3365.       }
  3366.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  3367.       {
  3368.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3369.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  3370.         if (PageCourante < 20) {PageCourante = 24;}                                                                     // Borne la Page courante
  3371.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3372.       }
  3373.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  3374.       {
  3375.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3376.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  3377.         if (PageCourante > 24) {PageCourante = 20;}                                                                     // Borne la Page courante
  3378.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3379.       }
  3380.       else if (xpos > 230 && xpos < 380 && ypos > 56 && ypos < 124) // ------------------------------------------------ // Pression sur l'heure de départ ou d'arrêt -------
  3381.       {
  3382.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3383.         PageCourante = 211;                                                                                             // Définit la Page courante 211
  3384.         HrsDepartReglages = HrsDepartProg2b;                                                                            // Transfère les heures de départ du programmateur 2b dans la variable temporaire de réglage
  3385.         MinsDepartReglages = MinsDepartProg2b;                                                                          // Transfère les minutes de départ du programmateur 2b dans la variable temporaire de réglage
  3386.         HrsArretReglages = HrsArretProg2b;                                                                              // Transfère les heures d'arrêt du programmateur 2b dans la variable temporaire de réglage
  3387.         MinsArretReglages = MinsArretProg2b;                                                                            // Transfère les minutes d'arrêt du programmateur 2b dans la variable temporaire de réglage
  3388.         LastMins = -1;                                                                                                  // Force l'affichage de l'heure sur la Page 211
  3389.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3390.       }
  3391.       else if (xpos > 13 && xpos < 50 && ypos > 147 && ypos < 185) // ------------------------------------------------- // Pression sur la Touche "D" ----------------------
  3392.       {
  3393.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3394.         IterationProg2b[0] = !IterationProg2b[0];                                                                       // Inverse l'itération 0 du programmateur 2b
  3395.         EEPROM.put(104, IterationProg2b[0]);                                                                            // Mémorise l'itération en EEPROM
  3396.         LastAffichageIterationProg2b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3397.       }
  3398.       else if (xpos > 68 && xpos < 111 && ypos > 147 && ypos < 185) // ------------------------------------------------ // Pression sur la Touche "L" ----------------------
  3399.       {
  3400.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3401.         IterationProg2b[1] = !IterationProg2b[1];                                                                       // Inverse l'itération 1 du programmateur 2b
  3402.         EEPROM.put(106, IterationProg2b[1]);                                                                            // Mémorise l'itération en EEPROM
  3403.         LastAffichageIterationProg2b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3404.       }
  3405.       else if (xpos > 129 && xpos < 168 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  3406.       {
  3407.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3408.         IterationProg2b[2] = !IterationProg2b[2];                                                                       // Inverse l'itération 2 du programmateur 2b
  3409.         EEPROM.put(108, IterationProg2b[2]);                                                                            // Mémorise l'itération en EEPROM
  3410.         LastAffichageIterationProg2b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3411.       }
  3412.       else if (xpos > 190 && xpos < 230 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  3413.       {
  3414.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3415.         IterationProg2b[3] = !IterationProg2b[3];                                                                       // Inverse l'itération 3 du programmateur 2b
  3416.         EEPROM.put(110, IterationProg2b[3]);                                                                            // Mémorise l'itération en EEPROM
  3417.         LastAffichageIterationProg2b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3418.       }
  3419.       else if (xpos > 250 && xpos < 290 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "J" ----------------------
  3420.       {
  3421.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3422.         IterationProg2b[4] = !IterationProg2b[4];                                                                       // Inverse l'itération 4 du programmateur 2b
  3423.         EEPROM.put(112, IterationProg2b[4]);                                                                            // Mémorise l'itération en EEPROM
  3424.         LastAffichageIterationProg2b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3425.       }
  3426.       else if (xpos > 306 && xpos < 350 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "V" ----------------------
  3427.       {
  3428.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3429.         IterationProg2b[5] = !IterationProg2b[5];                                                                       // Inverse l'itération 5 du programmateur 2b
  3430.         EEPROM.put(114, IterationProg2b[5]);                                                                            // Mémorise l'itération en EEPROM
  3431.         LastAffichageIterationProg2b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3432.       }
  3433.       else if (xpos > 367 && xpos < 405 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "S" ----------------------
  3434.       {
  3435.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3436.         IterationProg2b[6] = !IterationProg2b[6];                                                                       // Inverse l'itération 6 du programmateur 2b
  3437.         EEPROM.put(116, IterationProg2b[6]);                                                                            // Mémorise l'itération en EEPROM
  3438.         LastAffichageIterationProg2b = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3439.       }
  3440.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  3441.       {
  3442.         if (ModeProg2b != 0) // ....................................................................................... // Si "ModeProg2b" est différent de 0
  3443.         {
  3444.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3445.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 2
  3446.           ModeProg2b = 0;                                                                                               // Définit le mode du programmateur 2b
  3447.           EEPROM.put(118, ModeProg2b);                                                                                  // Mémorise le mode en EEPROM
  3448.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 2
  3449.           LastModeProg2b = -1;                                                                                          // Force l'affichage du mode du programmateur 2b
  3450.         }
  3451.       }
  3452.       else if (xpos > 153 && xpos < 250 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "AUTO" -------------------
  3453.       {
  3454.         if (ModeProg2b != 1) // ....................................................................................... // Si "ModeProg2b" est différent de 1
  3455.         {
  3456.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3457.           ModeProg2b = 1;                                                                                               // Définit le mode du programmateur 2b
  3458.           EEPROM.put(118, ModeProg2b);                                                                                  // Mémorise le mode en EEPROM
  3459.           LastModeProg2b = -1;                                                                                          // Force l'affichage du mode du programmateur 2b
  3460.         }
  3461.       }
  3462.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  3463.       {
  3464.         if (ModeProg2b != 2) // ....................................................................................... // Si "ModeProg2b" est différent de 2
  3465.         {
  3466.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3467.           digitalWrite(BrocheProg2LedVerte, HIGH);                                                                      // Active la sortie du programmateur 2
  3468.           ModeProg2b = 2;                                                                                               // Définit le mode du programmateur 2b
  3469.           EEPROM.put(118, ModeProg2b);                                                                                  // Mémorise le mode en EEPROM
  3470.           etatSortieProg2 = true;                                                                                       // Active l'état courant de la sortie du programmateur 2
  3471.           LastModeProg2b = -1;                                                                                          // Force l'affichage du mode du programmateur 2b
  3472.         }
  3473.       }
  3474.     }
  3475.  
  3476. //**************************************************************************************************************************************************************************
  3477.     else if (PageCourante == 22) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 22 => Prog 2c
  3478.     {
  3479.       if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ---------------------------------------------------- // Pression sur la Touche ">" ----------------------
  3480.       {
  3481.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3482.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  3483.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  3484.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3485.       }
  3486.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  3487.       {
  3488.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3489.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  3490.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  3491.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3492.       }
  3493.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 22 -------------
  3494.       {
  3495.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3496.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3497.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3498.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3499.       }
  3500.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  3501.       {
  3502.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3503.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  3504.         if (PageCourante < 20) {PageCourante = 24;}                                                                     // Borne la Page courante
  3505.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3506.       }
  3507.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  3508.       {
  3509.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3510.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  3511.         if (PageCourante > 24) {PageCourante = 20;}                                                                     // Borne la Page courante
  3512.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3513.       }
  3514.       else if (xpos > 230 && xpos < 380 && ypos > 56 && ypos < 124) // ------------------------------------------------ // Pression sur l'heure de départ ou d'arrêt -------
  3515.       {
  3516.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3517.         PageCourante = 212;                                                                                             // Définit la Page courante 212
  3518.         HrsDepartReglages = HrsDepartProg2c;                                                                            // Transfère les heures de départ du programmateur 2c dans la variable temporaire de réglage
  3519.         MinsDepartReglages = MinsDepartProg2c;                                                                          // Transfère les minutes de départ du programmateur 2c dans la variable temporaire de réglage
  3520.         HrsArretReglages = HrsArretProg2c;                                                                              // Transfère les heures d'arrêt du programmateur 2c dans la variable temporaire de réglage
  3521.         MinsArretReglages = MinsArretProg2c;                                                                            // Transfère les minutes d'arrêt du programmateur 2c dans la variable temporaire de réglage
  3522.         LastMins = -1;                                                                                                  // Force l'affichage de l'heure sur la Page 212
  3523.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3524.       }
  3525.       else if (xpos > 13 && xpos < 50 && ypos > 147 && ypos < 185) // ------------------------------------------------- // Pression sur la Touche "D" ----------------------
  3526.       {
  3527.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3528.         IterationProg2c[0] = !IterationProg2c[0];                                                                       // Inverse l'itération 0 du programmateur 2c
  3529.         EEPROM.put(128, IterationProg2c[0]);                                                                            // Mémorise l'itération en EEPROM
  3530.         LastAffichageIterationProg2c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3531.       }
  3532.       else if (xpos > 68 && xpos < 111 && ypos > 147 && ypos < 185) // ------------------------------------------------ // Pression sur la Touche "L" ----------------------
  3533.       {
  3534.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3535.         IterationProg2c[1] = !IterationProg2c[1];                                                                       // Inverse l'itération 1 du programmateur 2c
  3536.         EEPROM.put(130, IterationProg2c[1]);                                                                            // Mémorise l'itération en EEPROM
  3537.         LastAffichageIterationProg2c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3538.       }
  3539.       else if (xpos > 129 && xpos < 168 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  3540.       {
  3541.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3542.         IterationProg2c[2] = !IterationProg2c[2];                                                                       // Inverse l'itération 2 du programmateur 2c
  3543.         EEPROM.put(132, IterationProg2c[2]);                                                                            // Mémorise l'itération en EEPROM
  3544.         LastAffichageIterationProg2c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3545.       }
  3546.       else if (xpos > 190 && xpos < 230 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "M" ----------------------
  3547.       {
  3548.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3549.         IterationProg2c[3] = !IterationProg2c[3];                                                                       // Inverse l'itération 3 du programmateur 2c
  3550.         EEPROM.put(134, IterationProg2c[3]);                                                                            // Mémorise l'itération en EEPROM
  3551.         LastAffichageIterationProg2c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3552.       }
  3553.       else if (xpos > 250 && xpos < 290 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "J" ----------------------
  3554.       {
  3555.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3556.         IterationProg2c[4] = !IterationProg2c[4];                                                                       // Inverse l'itération 4 du programmateur 2c
  3557.         EEPROM.put(136, IterationProg2c[4]);                                                                            // Mémorise l'itération en EEPROM
  3558.         LastAffichageIterationProg2c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3559.       }
  3560.       else if (xpos > 306 && xpos < 350 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "V" ----------------------
  3561.       {
  3562.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3563.         IterationProg2c[5] = !IterationProg2c[5];                                                                       // Inverse l'itération 5 du programmateur 2c
  3564.         EEPROM.put(138, IterationProg2c[5]);                                                                            // Mémorise l'itération en EEPROM
  3565.         LastAffichageIterationProg2c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3566.       }
  3567.       else if (xpos > 367 && xpos < 405 && ypos > 147 && ypos < 185) // ----------------------------------------------- // Pression sur la Touche "S" ----------------------
  3568.       {
  3569.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3570.         IterationProg2c[6] = !IterationProg2c[6];                                                                       // Inverse l'itération 6 du programmateur 2c
  3571.         EEPROM.put(140, IterationProg2c[6]);                                                                            // Mémorise l'itération en EEPROM
  3572.         LastAffichageIterationProg2c = -1;                                                                              // Force l'affichage de l'itération du programmateur 1a
  3573.       }
  3574.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  3575.       {
  3576.         if (ModeProg2c != 0) // ....................................................................................... // Si "ModeProg2c" est différent de 0
  3577.         {
  3578.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3579.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie du programmateur 2
  3580.           ModeProg2c = 0;                                                                                               // Définit le mode du programmateur 2c
  3581.           EEPROM.put(142, ModeProg2c);                                                                                  // Mémorise le mode en EEPROM
  3582.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie du programmateur 2
  3583.           LastModeProg2c = -1;                                                                                          // Force l'affichage du mode du programmateur 2c
  3584.         }
  3585.       }
  3586.       else if (xpos > 153 && xpos < 250 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "AUTO" -------------------
  3587.       {
  3588.         if (ModeProg2c != 1) // ....................................................................................... // Si "ModeProg2c" est différent de 1
  3589.         {
  3590.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3591.           ModeProg2c = 1;                                                                                               // Définit le mode du programmateur 2c
  3592.           EEPROM.put(142, ModeProg2c);                                                                                  // Mémorise le mode en EEPROM
  3593.           LastModeProg2c = -1;                                                                                          // Force l'affichage du mode du programmateur 2c
  3594.         }
  3595.       }
  3596.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  3597.       {
  3598.         if (ModeProg2c != 2) // ....................................................................................... // Si "ModeProg2c" est différent de 2
  3599.         {
  3600.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3601.           digitalWrite(BrocheProg2LedVerte, HIGH);                                                                      // Active la sortie du programmateur 2
  3602.           ModeProg2c = 2;                                                                                               // Définit le mode du programmateur 2c
  3603.           EEPROM.put(142, ModeProg2c);                                                                                  // Mémorise le mode en EEPROM
  3604.           etatSortieProg2 = true;                                                                                       // Active l'état courant de la sortie du programmateur 2
  3605.           LastModeProg2c = -1;                                                                                          // Force l'affichage du mode du programmateur 2c
  3606.         }
  3607.       }
  3608.     }
  3609.  
  3610. //**************************************************************************************************************************************************************************
  3611.     else if (PageCourante == 23) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 23 => Minuterie Prog 2
  3612.     {
  3613.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Minuterie ----------
  3614.       {
  3615.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3616.         if (ModeMinuterieProg2 == 1)                                                                                    // Si la minuterie 2 est activée
  3617.         {
  3618.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie 2
  3619.           ModeMinuterieProg2 = 0;                                                                                       // Définit le mode de la minuterie 2
  3620.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie 2
  3621.           LastModeMinuterieProg2 = -1;                                                                                  // Force l'affichage du mode de la minuterie 2
  3622.           t1DebutTempoMinuterie2 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 2 en ms
  3623.         }
  3624.         HrsMinuterieReglageProg2++; if (HrsMinuterieReglageProg2 > 23) {HrsMinuterieReglageProg2 = 0;}                  // Modifie les heures de réglages de la minuterie 2
  3625.       }
  3626.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "-" Hrs Minuterie ----------
  3627.       {
  3628.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3629.         if (ModeMinuterieProg2 == 1)                                                                                    // Si la minuterie 2 est activée
  3630.         {
  3631.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie 2
  3632.           ModeMinuterieProg2 = 0;                                                                                       // Définit le mode de la minuterie 2
  3633.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie 2
  3634.           LastModeMinuterieProg2 = -1;                                                                                  // Force l'affichage du mode de la minuterie 2
  3635.           t1DebutTempoMinuterie2 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 2 en ms
  3636.         }
  3637.         HrsMinuterieReglageProg2--; if (HrsMinuterieReglageProg2 < 0) {HrsMinuterieReglageProg2 = 23;}                  // Modifie les heures de réglages de la minuterie 2
  3638.       }
  3639.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Minuterie ---------
  3640.       {
  3641.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3642.         if (ModeMinuterieProg2 == 1)                                                                                    // Si la minuterie 2 est activée
  3643.         {
  3644.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie 2
  3645.           ModeMinuterieProg2 = 0;                                                                                       // Définit le mode de la minuterie 2
  3646.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie 2
  3647.           LastModeMinuterieProg2 = -1;                                                                                  // Force l'affichage du mode de la minuterie 2
  3648.           t1DebutTempoMinuterie2 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 2 en ms
  3649.         }
  3650.         MinsMinuterieReglageProg2++; if (MinsMinuterieReglageProg2 > 59) {MinsMinuterieReglageProg2 = 0;}               // Modifie les minutes de réglages de la minuterie 2
  3651.       }
  3652.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "-" Mins Minuterie ---------
  3653.       {
  3654.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3655.         if (ModeMinuterieProg2 == 1)                                                                                    // Si la minuterie 2 est activée
  3656.         {
  3657.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie 2
  3658.           ModeMinuterieProg2 = 0;                                                                                       // Définit le mode de la minuterie 2
  3659.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie 2
  3660.           LastModeMinuterieProg2 = -1;                                                                                  // Force l'affichage du mode de la minuterie 2
  3661.           t1DebutTempoMinuterie2 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 2 en ms
  3662.         }
  3663.         MinsMinuterieReglageProg2--; if (MinsMinuterieReglageProg2 < 0) {MinsMinuterieReglageProg2 = 59;}               // Modifie les Minutes de réglages de la minuterie 2
  3664.       }
  3665.       else if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ----------------------------------------------- // Pression sur la Touche ">" ----------------------
  3666.       {
  3667.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3668.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  3669.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  3670.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3671.       }
  3672.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  3673.       {
  3674.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3675.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  3676.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  3677.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3678.       }
  3679.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 23 -------------
  3680.       {
  3681.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3682.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3683.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3684.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3685.       }
  3686.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  3687.       {
  3688.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3689.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  3690.         if (PageCourante < 10) {PageCourante = 24;}                                                                     // Borne la Page courante
  3691.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3692.       }
  3693.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  3694.       {
  3695.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3696.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  3697.         if (PageCourante > 24) {PageCourante = 10;}                                                                     // Borne la Page courante
  3698.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3699.       }
  3700.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  3701.       {
  3702.         if (ModeMinuterieProg2 != 0) // ............................................................................... // Si "ModeMinuterieProg2" est différent de 0
  3703.         {
  3704.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3705.           digitalWrite(BrocheProg2LedVerte, LOW);                                                                       // Désactive la sortie 2
  3706.           ModeMinuterieProg2 = 0;                                                                                       // Définit le mode de la minuterie 2
  3707.           etatSortieProg2 = false;                                                                                      // Désactive l'état courant de la sortie 2
  3708.           LastModeMinuterieProg2 = -1;                                                                                  // Force l'affichage du mode de la minuterie 2
  3709.           t1DebutTempoMinuterie2 = 0;                                                                                   // Réinitialise la temporisation de la minuterie 2 en ms
  3710.         }
  3711.       }
  3712.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  3713.       {
  3714.         if (ModeMinuterieProg2 != 1) // ............................................................................... // Si "ModeMinuterieProg2" est différent de 1
  3715.         {
  3716.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3717.           digitalWrite(BrocheProg2LedVerte, HIGH);                                                                      // Active la sortie 2
  3718.           ModeMinuterieProg2 = 1;                                                                                       // Définit le mode de la minuterie 2
  3719.           etatSortieProg2 = true;                                                                                       // Active l'état courant de la sortie 2
  3720.           LastModeMinuterieProg2 = -1;                                                                                  // Force l'affichage du mode de la minuterie 2
  3721.           HrsMinuterieProg2 = HrsMinuterieReglageProg2;                                                                 // Transfère les heures de réglages de la minuterie 2
  3722.           MinsMinuterieProg2 = MinsMinuterieReglageProg2;                                                               // Transfère les minutes de réglages de la minuterie 2
  3723.           DureeMinuterie2_ms = HrsMinuterieProg2*60ul*60ul*1000ul;                                                      // Convertit la durée de la minuterie 2 en ms
  3724.           DureeMinuterie2_ms = DureeMinuterie2_ms + MinsMinuterieProg2*60ul*1000ul;
  3725.           //Serial.println(DureeMinuterie2_ms); // Débug
  3726.           t1DebutTempoMinuterie2 = millis();                                                                            // Démarre la temporisation de la minuterie 2 en ms
  3727.         }
  3728.       }
  3729.     }
  3730.  
  3731. //**************************************************************************************************************************************************************************
  3732.     else if (PageCourante == 24) // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 24 => Thermostat 2
  3733.     {
  3734.       if (xpos > 50 && xpos < 90 && ypos > 148 && ypos < 180) // ------------------------------------------------------ // Pression sur l'icone "+" Thermostat -------------
  3735.       {
  3736.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3737.         if (ModeThermostat2 == 1)                                                                                       // Si le thermostat1 est activé
  3738.         {
  3739.           ModeThermostat2 = 0;                                                                                          // Définit le mode du thermostat 2
  3740.           LastModeThermostat2 = -1;                                                                                     // Force l'affichage du mode du thermostat 2
  3741.         }
  3742.         temperatureThermostat2 = temperatureThermostat2 + 0.5;                                                          // Modifie le thermostat 2
  3743.         if (temperatureThermostat2 > 28.0) {temperatureThermostat2 = 15.0;}                                             // Borne le thermostat 2
  3744.       }
  3745.       else if (xpos > 308 && xpos < 344 && ypos > 148 && ypos < 180) // ----------------------------------------------- // Pression sur l'icone "-" Thermostat -------------
  3746.       {
  3747.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3748.         if (ModeThermostat2 == 1)                                                                                       // Si le thermostat est activé
  3749.         {
  3750.           ModeThermostat2 = 0;                                                                                          // Définit le mode du thermostat 2
  3751.           LastModeThermostat2 = -1;                                                                                     // Force l'affichage du mode du thermostat 2
  3752.         }
  3753.         temperatureThermostat2 = temperatureThermostat2 - 0.5;                                                          // Modifie le thermostat 2
  3754.         if (temperatureThermostat2 < 15.0) {temperatureThermostat2 = 28.0;}                                             // Borne le thermostat 2
  3755.       }
  3756.       else if (xpos > 408 && xpos < 430 && ypos > 112 && ypos < 155) // ----------------------------------------------- // Pression sur la Touche ">" ----------------------
  3757.       {
  3758.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3759.         PageCourante = PageCourante + 10;                                                                               // Modifie la Page courante
  3760.         if (PageCourante > 20) {PageCourante = 0;}                                                                      // Borne la Page courante
  3761.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3762.       }
  3763.       else if (xpos > 0 && xpos < 16 && ypos > 112 && ypos < 155) // -------------------------------------------------- // Pression sur la Touche "<" ----------------------
  3764.       {
  3765.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3766.         PageCourante = PageCourante - 10;                                                                               // Modifie la Page courante
  3767.         if (PageCourante < 0) {PageCourante = 20;}                                                                      // Borne la Page courante
  3768.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3769.       }
  3770.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 24 -------------
  3771.       {
  3772.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3773.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3774.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3775.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3776.       }
  3777.       else if (xpos > 0 && xpos < 22 && ypos > 215 && ypos < 245) // -------------------------------------------------- // Pression sur la Touche "Haut" -------------------
  3778.       {
  3779.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3780.         PageCourante = PageCourante - 1;                                                                                // Modifie la Page courante
  3781.         if (PageCourante < 10) {PageCourante = 24;}                                                                     // Borne la Page courante
  3782.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3783.       }
  3784.       else if (xpos > 400 && xpos < 440 && ypos > 215 && ypos < 245) // ----------------------------------------------- // Pression sur la Touche "Bas" --------------------
  3785.       {
  3786.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3787.         PageCourante = PageCourante + 1;                                                                                // Modifie la Page courante
  3788.         if (PageCourante > 24) {PageCourante = 10;}                                                                     // Borne la Page courante
  3789.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3790.       }
  3791.       else if (xpos > 278 && xpos < 355 && ypos > 200 && ypos < 235) // ----------------------------------------------- // Pression sur la Touche "OFF" --------------------
  3792.       {
  3793.         if (ModeThermostat2 != 0) // .................................................................................. // Si "ModeThermostat2" est différent de 0
  3794.         {
  3795.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3796.           ModeThermostat2 = 0;                                                                                          // Définit le mode du thermostat 2
  3797.           LastModeThermostat2 = -1;                                                                                     // Force l'affichage du mode du thermostat 2
  3798.         }
  3799.       }
  3800.       else if (xpos > 55 && xpos < 220 && ypos > 200 && ypos < 235) // ------------------------------------------------ // Pression sur la Touche "ON" ---------------------
  3801.       {
  3802.         if (ModeThermostat2 != 1) // .................................................................................. // Si "ModeThermostat2" est différent de 1
  3803.         {
  3804.           Buzzer(3, 0, 1);                                                                                              // Active le buzzer 3ms
  3805.           ModeThermostat2 = 1;                                                                                          // Définit le mode du thermostat 2
  3806.           LastModeThermostat2 = -1;                                                                                     // Force l'affichage du mode du thermostat 2
  3807.         }
  3808.       }
  3809.     }
  3810.  
  3811. //**************************************************************************************************************************************************************************
  3812.     else if (PageCourante == 110) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 110 => Réglages horaires Prog 1a
  3813.     {
  3814.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Départ -------------
  3815.       {
  3816.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3817.         HrsDepartReglages++; if (HrsDepartReglages > 23) {HrsDepartReglages = 0;}                                       // Modifie les Heures de Départ de réglages
  3818.       }
  3819.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Départ ------------
  3820.       {
  3821.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3822.         MinsDepartReglages++; if (MinsDepartReglages > 59) {MinsDepartReglages = 0;}                                    // Modifie les Minutes de Départ de réglages
  3823.       }
  3824.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Hrs Arrêt --------------
  3825.       {
  3826.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3827.         HrsArretReglages++; if (HrsArretReglages > 23) {HrsArretReglages = 0;}                                          // Modifie les Heures d'Arrêt de réglages
  3828.       }
  3829.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Arrêt -------------
  3830.       {
  3831.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3832.         MinsArretReglages++; if (MinsArretReglages > 59) {MinsArretReglages = 0;}                                       // Modifie les Minutes d'Arrêt de réglages
  3833.       }
  3834.       else if (xpos > 0 && xpos < 25 && ypos > 205 && ypos < 240) // -------------------------------------------------- // Pression sur l'icone "OK" -----------------------
  3835.       {
  3836.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3837.         HrsDepartProg1a = HrsDepartReglages;                                                                            // Transfère la variable temporaire de réglage dans les heures de départ du programmateur 1a
  3838.         MinsDepartProg1a = MinsDepartReglages;                                                                          // Transfère la variable temporaire de réglage dans les minutes de départ du programmateur 1a
  3839.         HrsArretProg1a = HrsArretReglages;                                                                              // Transfère la variable temporaire de réglage dans les heures d'arrêt du programmateur 1a
  3840.         MinsArretProg1a = MinsArretReglages;                                                                            // Transfère la variable temporaire de réglage dans les minutes d'arrêt du programmateur 1a
  3841.         EEPROM.put(0, HrsDepartProg1a);                                                                                 // Mémorise les heures de départ du programmateur 1a
  3842.         EEPROM.put(2, MinsDepartProg1a);                                                                                // Mémorise les minutes de départ du programmateur 1a
  3843.         EEPROM.put(4, HrsArretProg1a);                                                                                  // Mémorise les heures d'arrêt du programmateur 1a
  3844.         EEPROM.put(6, MinsArretProg1a);                                                                                 // Mémorise les minutes d'arrêt du programmateur 1a
  3845.         PageCourante = 10;                                                                                              // Définit la Page courante 10
  3846.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3847.       }
  3848.       else if (xpos > 392 && xpos < 435 && ypos > 205 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "X" ------------------------
  3849.       {
  3850.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3851.         PageCourante = 10;                                                                                              // Définit la Page courante 10
  3852.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3853.       }
  3854.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 110 ------------
  3855.       {
  3856.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3857.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3858.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3859.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3860.       }
  3861.     }
  3862.  
  3863. //**************************************************************************************************************************************************************************
  3864.     else if (PageCourante == 111) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 111 => Réglages horaires Prog 1b
  3865.     {
  3866.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Départ -------------
  3867.       {
  3868.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3869.         HrsDepartReglages++; if (HrsDepartReglages > 23) {HrsDepartReglages = 0;}                                       // Modifie les Heures de Départ de réglages
  3870.       }
  3871.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Départ ------------
  3872.       {
  3873.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3874.         MinsDepartReglages++; if (MinsDepartReglages > 59) {MinsDepartReglages = 0;}                                    // Modifie les Minutes de Départ de réglages
  3875.       }
  3876.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Hrs Arrêt --------------
  3877.       {
  3878.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3879.         HrsArretReglages++; if (HrsArretReglages > 23) {HrsArretReglages = 0;}                                          // Modifie les Heures d'Arrêt de réglages
  3880.       }
  3881.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Arrêt -------------
  3882.       {
  3883.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3884.         MinsArretReglages++; if (MinsArretReglages > 59) {MinsArretReglages = 0;}                                       // Modifie les Minutes d'Arrêt de réglages
  3885.       }
  3886.       else if (xpos > 0 && xpos < 25 && ypos > 205 && ypos < 240) // -------------------------------------------------- // Pression sur l'icone "OK" -----------------------
  3887.       {
  3888.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3889.         HrsDepartProg1b = HrsDepartReglages;                                                                            // Transfère la variable temporaire de réglage dans les heures de départ du programmateur 1b
  3890.         MinsDepartProg1b = MinsDepartReglages;                                                                          // Transfère la variable temporaire de réglage dans les minutes de départ du programmateur 1b
  3891.         HrsArretProg1b = HrsArretReglages;                                                                              // Transfère la variable temporaire de réglage dans les heures d'arrêt du programmateur 1b
  3892.         MinsArretProg1b = MinsArretReglages;                                                                            // Transfère la variable temporaire de réglage dans les minutes d'arrêt du programmateur 1b
  3893.         EEPROM.put(24, HrsDepartProg1b);                                                                                // Mémorise les heures de départ du programmateur 1b
  3894.         EEPROM.put(26, MinsDepartProg1b);                                                                               // Mémorise les minutes de départ du programmateur 1b
  3895.         EEPROM.put(28, HrsArretProg1b);                                                                                 // Mémorise les heures d'arrêt du programmateur 1b
  3896.         EEPROM.put(30, MinsArretProg1b);                                                                                // Mémorise les minutes d'arrêt du programmateur 1b
  3897.         PageCourante = 11;                                                                                              // Définit la Page courante 11
  3898.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3899.       }
  3900.       else if (xpos > 392 && xpos < 435 && ypos > 205 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "X" ------------------------
  3901.       {
  3902.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3903.         PageCourante = 11;                                                                                              // Définit la Page courante 11
  3904.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3905.       }
  3906.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 111 ------------
  3907.       {
  3908.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3909.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3910.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3911.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3912.       }
  3913.     }
  3914.  
  3915. //**************************************************************************************************************************************************************************
  3916.     else if (PageCourante == 112) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 112 => Réglages horaires Prog 1c
  3917.     {
  3918.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Départ -------------
  3919.       {
  3920.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3921.         HrsDepartReglages++; if (HrsDepartReglages > 23) {HrsDepartReglages = 0;}                                       // Modifie les Heures de Départ de réglages
  3922.       }
  3923.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Départ ------------
  3924.       {
  3925.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3926.         MinsDepartReglages++; if (MinsDepartReglages > 59) {MinsDepartReglages = 0;}                                    // Modifie les Minutes de Départ de réglages
  3927.       }
  3928.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Hrs Arrêt --------------
  3929.       {
  3930.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3931.         HrsArretReglages++; if (HrsArretReglages > 23) {HrsArretReglages = 0;}                                          // Modifie les Heures d'Arrêt de réglages
  3932.       }
  3933.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Arrêt -------------
  3934.       {
  3935.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3936.         MinsArretReglages++; if (MinsArretReglages > 59) {MinsArretReglages = 0;}                                       // Modifie les Minutes d'Arrêt de réglages
  3937.       }
  3938.       else if (xpos > 0 && xpos < 25 && ypos > 205 && ypos < 240) // -------------------------------------------------- // Pression sur l'icone "OK" -----------------------
  3939.       {
  3940.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3941.         HrsDepartProg1c = HrsDepartReglages;                                                                            // Transfère la variable temporaire de réglage dans les heures de départ du programmateur 1c
  3942.         MinsDepartProg1c = MinsDepartReglages;                                                                          // Transfère la variable temporaire de réglage dans les minutes de départ du programmateur 1c
  3943.         HrsArretProg1c = HrsArretReglages;                                                                              // Transfère la variable temporaire de réglage dans les heures d'arrêt du programmateur 1c
  3944.         MinsArretProg1c = MinsArretReglages;                                                                            // Transfère la variable temporaire de réglage dans les minutes d'arrêt du programmateur 1c
  3945.         EEPROM.put(48, HrsDepartProg1c);                                                                                // Mémorise les heures de départ du programmateur 1c
  3946.         EEPROM.put(50, MinsDepartProg1c);                                                                               // Mémorise les minutes de départ du programmateur 1c
  3947.         EEPROM.put(52, HrsArretProg1c);                                                                                 // Mémorise les heures d'arrêt du programmateur 1c
  3948.         EEPROM.put(54, MinsArretProg1c);                                                                                // Mémorise les minutes d'arrêt du programmateur 1c
  3949.         PageCourante = 12;                                                                                              // Définit la Page courante 12
  3950.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3951.       }
  3952.       else if (xpos > 392 && xpos < 435 && ypos > 205 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "X" ------------------------
  3953.       {
  3954.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3955.         PageCourante = 12;                                                                                              // Définit la Page courante 12
  3956.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3957.       }
  3958.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 112 ------------
  3959.       {
  3960.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3961.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  3962.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  3963.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  3964.       }
  3965.     }
  3966.  
  3967. //**************************************************************************************************************************************************************************
  3968.     else if (PageCourante == 210) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 110 => Réglages horaires Prog 2a
  3969.     {
  3970.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Départ -------------
  3971.       {
  3972.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3973.         HrsDepartReglages++; if (HrsDepartReglages > 23) {HrsDepartReglages = 0;}                                       // Modifie les Heures de Départ de réglages
  3974.       }
  3975.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Départ ------------
  3976.       {
  3977.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3978.         MinsDepartReglages++; if (MinsDepartReglages > 59) {MinsDepartReglages = 0;}                                    // Modifie les Minutes de Départ de réglages
  3979.       }
  3980.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Hrs Arrêt --------------
  3981.       {
  3982.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3983.         HrsArretReglages++; if (HrsArretReglages > 23) {HrsArretReglages = 0;}                                          // Modifie les Heures d'Arrêt de réglages
  3984.       }
  3985.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Arrêt -------------
  3986.       {
  3987.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3988.         MinsArretReglages++; if (MinsArretReglages > 59) {MinsArretReglages = 0;}                                       // Modifie les Minutes d'Arrêt de réglages
  3989.       }
  3990.       else if (xpos > 0 && xpos < 25 && ypos > 205 && ypos < 240) // -------------------------------------------------- // Pression sur l'icone "OK" -----------------------
  3991.       {
  3992.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  3993.         HrsDepartProg2a = HrsDepartReglages;                                                                            // Transfère la variable temporaire de réglage dans les heures de départ du programmateur 2a
  3994.         MinsDepartProg2a = MinsDepartReglages;                                                                          // Transfère la variable temporaire de réglage dans les minutes de départ du programmateur 2a
  3995.         HrsArretProg2a = HrsArretReglages;                                                                              // Transfère la variable temporaire de réglage dans les heures d'arrêt du programmateur 2a
  3996.         MinsArretProg2a = MinsArretReglages;                                                                            // Transfère la variable temporaire de réglage dans les minutes d'arrêt du programmateur 2a
  3997.         EEPROM.put(72, HrsDepartProg2a);                                                                                // Mémorise les heures de départ du programmateur 2a
  3998.         EEPROM.put(74, MinsDepartProg2a);                                                                               // Mémorise les minutes de départ du programmateur 2a
  3999.         EEPROM.put(76, HrsArretProg2a);                                                                                 // Mémorise les heures d'arrêt du programmateur 2a
  4000.         EEPROM.put(78, MinsArretProg2a);                                                                                // Mémorise les minutes d'arrêt du programmateur 2a
  4001.         PageCourante = 20;                                                                                              // Définit la Page courante 20
  4002.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4003.       }
  4004.       else if (xpos > 392 && xpos < 435 && ypos > 205 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "X" ------------------------
  4005.       {
  4006.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4007.         PageCourante = 20;                                                                                              // Définit la Page courante 20
  4008.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4009.       }
  4010.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 210 ------------
  4011.       {
  4012.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4013.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  4014.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  4015.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4016.       }
  4017.     }
  4018.  
  4019. //**************************************************************************************************************************************************************************
  4020.     else if (PageCourante == 211) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 211 => Réglages horaires Prog 2b
  4021.     {
  4022.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Départ -------------
  4023.       {
  4024.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4025.         HrsDepartReglages++; if (HrsDepartReglages > 23) {HrsDepartReglages = 0;}                                       // Modifie les Heures de Départ de réglages
  4026.       }
  4027.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Départ ------------
  4028.       {
  4029.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4030.         MinsDepartReglages++; if (MinsDepartReglages > 59) {MinsDepartReglages = 0;}                                    // Modifie les Minutes de Départ de réglages
  4031.       }
  4032.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Hrs Arrêt --------------
  4033.       {
  4034.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4035.         HrsArretReglages++; if (HrsArretReglages > 23) {HrsArretReglages = 0;}                                          // Modifie les Heures d'Arrêt de réglages
  4036.       }
  4037.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Arrêt -------------
  4038.       {
  4039.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4040.         MinsArretReglages++; if (MinsArretReglages > 59) {MinsArretReglages = 0;}                                       // Modifie les Minutes d'Arrêt de réglages
  4041.       }
  4042.       else if (xpos > 0 && xpos < 25 && ypos > 205 && ypos < 240) // -------------------------------------------------- // Pression sur l'icone "OK" -----------------------
  4043.       {
  4044.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4045.         HrsDepartProg2b = HrsDepartReglages;                                                                            // Transfère la variable temporaire de réglage dans les heures de départ du programmateur 2b
  4046.         MinsDepartProg2b = MinsDepartReglages;                                                                          // Transfère la variable temporaire de réglage dans les minutes de départ du programmateur 2b
  4047.         HrsArretProg2b = HrsArretReglages;                                                                              // Transfère la variable temporaire de réglage dans les heures d'arrêt du programmateur 2b
  4048.         MinsArretProg2b = MinsArretReglages;                                                                            // Transfère la variable temporaire de réglage dans les minutes d'arrêt du programmateur 2b
  4049.         EEPROM.put(96, HrsDepartProg2b);                                                                                // Mémorise les heures de départ du programmateur 2b
  4050.         EEPROM.put(98, MinsDepartProg2b);                                                                               // Mémorise les minutes de départ du programmateur 2b
  4051.         EEPROM.put(100, HrsArretProg2b);                                                                                // Mémorise les heures d'arrêt du programmateur 2b
  4052.         EEPROM.put(102, MinsArretProg2b);                                                                               // Mémorise les minutes d'arrêt du programmateur 2b
  4053.         PageCourante = 21;                                                                                              // Définit la Page courante 21
  4054.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4055.       }
  4056.       else if (xpos > 392 && xpos < 435 && ypos > 205 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "X" ------------------------
  4057.       {
  4058.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4059.         PageCourante = 21;                                                                                              // Définit la Page courante 21
  4060.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4061.       }
  4062.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 211 ------------
  4063.       {
  4064.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4065.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  4066.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  4067.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4068.       }
  4069.     }
  4070.  
  4071. //**************************************************************************************************************************************************************************
  4072.     else if (PageCourante == 212) // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Page Courante 212 => Réglages horaires Prog 2c
  4073.     {
  4074.       if (xpos > 48 && xpos < 77 && ypos > 140 && ypos < 165) // ------------------------------------------------------ // Pression sur l'icone "+" Hrs Départ -------------
  4075.       {
  4076.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4077.         HrsDepartReglages++; if (HrsDepartReglages > 23) {HrsDepartReglages = 0;}                                       // Modifie les Heures de Départ de réglages
  4078.       }
  4079.       else if (xpos > 112 && xpos < 140 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Départ ------------
  4080.       {
  4081.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4082.         MinsDepartReglages++; if (MinsDepartReglages > 59) {MinsDepartReglages = 0;}                                    // Modifie les Minutes de Départ de réglages
  4083.       }
  4084.       else if (xpos > 270 && xpos < 300 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Hrs Arrêt --------------
  4085.       {
  4086.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4087.         HrsArretReglages++; if (HrsArretReglages > 23) {HrsArretReglages = 0;}                                          // Modifie les Heures d'Arrêt de réglages
  4088.       }
  4089.       else if (xpos > 332 && xpos < 360 && ypos > 140 && ypos < 165) // ----------------------------------------------- // Pression sur l'icone "+" Mins Arrêt -------------
  4090.       {
  4091.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4092.         MinsArretReglages++; if (MinsArretReglages > 59) {MinsArretReglages = 0;}                                       // Modifie les Minutes d'Arrêt de réglages
  4093.       }
  4094.       else if (xpos > 0 && xpos < 25 && ypos > 205 && ypos < 240) // -------------------------------------------------- // Pression sur l'icone "OK" -----------------------
  4095.       {
  4096.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4097.         HrsDepartProg2c = HrsDepartReglages;                                                                            // Transfère la variable temporaire de réglage dans les heures de départ du programmateur 2c
  4098.         MinsDepartProg2c = MinsDepartReglages;                                                                          // Transfère la variable temporaire de réglage dans les minutes de départ du programmateur 2c
  4099.         HrsArretProg2c = HrsArretReglages;                                                                              // Transfère la variable temporaire de réglage dans les heures d'arrêt du programmateur 2c
  4100.         MinsArretProg2c = MinsArretReglages;                                                                            // Transfère la variable temporaire de réglage dans les minutes d'arrêt du programmateur 2c
  4101.         EEPROM.put(120, HrsDepartProg2c);                                                                               // Mémorise les heures de départ du programmateur 2c
  4102.         EEPROM.put(122, MinsDepartProg2c);                                                                              // Mémorise les minutes de départ du programmateur 2c
  4103.         EEPROM.put(124, HrsArretProg2c);                                                                                // Mémorise les heures d'arrêt du programmateur 2c
  4104.         EEPROM.put(126, MinsArretProg2c);                                                                               // Mémorise les minutes d'arrêt du programmateur 2c
  4105.         PageCourante = 22;                                                                                              // Définit la Page courante 22
  4106.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4107.       }
  4108.       else if (xpos > 392 && xpos < 435 && ypos > 205 && ypos < 240) // ----------------------------------------------- // Pression sur l'icone "X" ------------------------
  4109.       {
  4110.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4111.         PageCourante = 22;                                                                                              // Définit la Page courante 22
  4112.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4113.       }
  4114.       else if (xpos > 0 && xpos < 435 && ypos > 8 && ypos < 40) // ---------------------------------------------------- // Pression sur le titre de la Page 212 ------------
  4115.       {
  4116.         Buzzer(3, 0, 1);                                                                                                // Active le buzzer 3ms
  4117.         PageCourante = 0;                                                                                               // Définit la Page courante 0
  4118.         LastPageCourante = -1;                                                                                          // Force l'affichage des informations de la Page courante
  4119.         FonctionReinitVariablesPages(PageCourante);                                                                     // Appelle la fonction pour forcer l'affichage des informations des Pages
  4120.       }
  4121.     }
  4122.   }
  4123. }
  4124.  
  4125. //**************************************************************************************************************************************************************************
  4126. //*** Fonction de réinitialisation des variables pour forcer l'affichage des informations des pages ************************************************************************
  4127. //**************************************************************************************************************************************************************************
  4128. void FonctionReinitVariablesPages (int page)
  4129. {
  4130.   if (page == 0) // *************************************************************************************************** // Si la Page courante est égale à 0
  4131.   {
  4132.     LasttemperatureCourante = -1;
  4133.     LastMaxTemp = -1;
  4134.     LastMinTemp = -1;
  4135.   }
  4136.   else if (page == 10) // ********************************************************************************************* // Si la Page courante est égale à 10
  4137.   {
  4138.     LastAffichageHeuresProg1a = -1;
  4139.     LastAffichageIterationProg1a = -1;
  4140.     LastModeProg1a = -1;
  4141.   }
  4142.   else if (page == 11) // ********************************************************************************************* // Si la Page courante est égale à 11
  4143.   {
  4144.     LastAffichageHeuresProg1b = -1;
  4145.     LastAffichageIterationProg1b = -1;
  4146.     LastModeProg1b = -1;
  4147.   }
  4148.   else if (page == 12) // ********************************************************************************************* // Si la Page courante est égale à 12
  4149.   {
  4150.     LastAffichageHeuresProg1c = -1;
  4151.     LastAffichageIterationProg1c = -1;
  4152.     LastModeProg1c = -1;
  4153.   }
  4154.  
  4155.   else if (page == 20) // ********************************************************************************************* // Si la Page courante est égale à 20
  4156.   {
  4157.     LastAffichageHeuresProg2a = -1;
  4158.     LastAffichageIterationProg2a = -1;
  4159.     LastModeProg2a = -1;
  4160.   }
  4161.   else if (page == 21) // ********************************************************************************************* // Si la Page courante est égale à 21
  4162.   {
  4163.     LastAffichageHeuresProg2b = -1;
  4164.     LastAffichageIterationProg2b = -1;
  4165.     LastModeProg2b = -1;
  4166.   }
  4167.   else if (page == 22) // ********************************************************************************************* // Si la Page courante est égale à 22
  4168.   {
  4169.     LastAffichageHeuresProg2c = -1;
  4170.     LastAffichageIterationProg2c = -1;
  4171.     LastModeProg2c = -1;
  4172.   }
  4173.  
  4174.   LastHrsDepartReglages = -1;                                                                                           // Force l'affichage des heures de départ de réglages
  4175.   LastMinsDepartReglages = -1;                                                                                          // Force l'affichage des minutes de départ de réglages
  4176.   LastHrsArretReglages = -1;                                                                                            // Force l'affichage des heures d'arrêt de réglages
  4177.   LastMinsArretReglages = -1;                                                                                           // Force l'affichage des minutes d'arrêt de réglages
  4178.   LastHrsReglages = -1;                                                                                                 // Force l'affichage des heures courantes de réglages
  4179.   LastMinsReglages = -1;                                                                                                // Force l'affichage des Minutes courantes de réglages
  4180.   LastAffichageJourSemaine = -1;                                                                                        // Force l'affichage des jours de la semaine de réglages
  4181.   LastJourReglages = -1;                                                                                                // Force l'affichage des jours de réglages
  4182.   LastMoisReglages = -1;                                                                                                // Force l'affichage des mois de réglages
  4183.   LastAnneeReglages = -1;                                                                                               // Force l'affichage des années de réglages
  4184.   LastHrsReglagesMinuterie1 = -1;                                                                                       // Force l'affichage des heures de la minuterie 1 de réglages
  4185.   LastMinsReglagesMinuterie1 = -1;                                                                                      // Force l'affichage des minutes de la minuterie 1 de réglages
  4186.   LastModeMinuterieProg1 = -1;                                                                                          // Force l'affichage du mode de fonctionnement de la minuterie 1
  4187.   LastHrsReglagesMinuterie2 = -1;                                                                                       // Force l'affichage des heures de la minuterie 2 de réglages
  4188.   LastMinsReglagesMinuterie2 = -1;                                                                                      // Force l'affichage des minutes de la minuterie 2 de réglages
  4189.   LastModeMinuterieProg2 = -1;                                                                                          // Force l'affichage du mode de fonctionnement de la minuterie 2
  4190.   LasttemperatureThermostat1 = -1;                                                                                      // Force l'affichage du thermostat 1
  4191.   LasttemperatureThermostat2 = -1;                                                                                      // Force l'affichage du thermostat 2
  4192.   LastModeThermostat1 = -1;                                                                                             // Force l'affichage du mode de fonctionnement du thermostat 1
  4193.   LastModeThermostat2 = -1;                                                                                             // Force l'affichage du mode de fonctionnement du thermostat 2
  4194.   LastAffichageTemperatureModeThermostat1 = -1;                                                                         // Force l'affichage de la température courante sur la page de réglages du thermostat 1
  4195.   LastAffichageTemperatureModeThermostat2 = -1;                                                                         // Force l'affichage de la température courante sur la page de réglages du thermostat 2
  4196. }
Add Comment
Please, Sign In to add comment