// Cafetiere_2_boutons const int ALIMENTATION = 2; const int ONOFF = 3; const int SIMPLE_TASSE = 4; const int DOUBLE_TASSE = 5; const int BOUTON_1 = 8; const int BOUTON_2 = 9; const int LED_TEMOIN = 13; // Temps avant mise en veille de la cafetière (en minutes) const int VEILLE = 5; // Etat de la cafetière (0 éteinte, 1 allumée) boolean allumageCafetiere = 0; // Moment de la derniere utilisation unsigned long derniereUtilisation; void setup() { pinMode(ALIMENTATION, OUTPUT); pinMode(ONOFF, OUTPUT); pinMode(SIMPLE_TASSE, OUTPUT); pinMode(DOUBLE_TASSE, OUTPUT); pinMode(BOUTON_1, INPUT_PULLUP); pinMode(BOUTON_2, INPUT_PULLUP); pinMode(LED_TEMOIN, OUTPUT); // Mise hors tension de la cafetière digitalWrite(ALIMENTATION, HIGH); // Les 3 boutons ne sont pas appuyés digitalWrite(ONOFF, HIGH); digitalWrite(SIMPLE_TASSE, HIGH); digitalWrite(DOUBLE_TASSE, HIGH); // La LED témoin est allumée digitalWrite(LED_TEMOIN, HIGH); } void loop() { // Si on appuie sur le bouton 1 if (digitalRead(BOUTON_1) == LOW){ appuyer(SIMPLE_TASSE); } // Si on appuie sur le bouton 2... if (digitalRead(BOUTON_2) == LOW){ appuyer(DOUBLE_TASSE); } // Si la cafetière est allumée et qu'elle n'a pas été utilisée depuis longtemps if ((millis() - derniereUtilisation) >= (VEILLE*60000) && allumageCafetiere == 1){ extinctionCafetiere(); } } void appuyer(int bouton){ digitalWrite(LED_TEMOIN, LOW); // Si la cafetière est éteinte if (allumageCafetiere == 0){ // Mise sous tension de la cafetière digitalWrite(ALIMENTATION, LOW); delay(1000); // Appui sur le bouton ON/OFF pour allumer la cafetière digitalWrite(ONOFF, LOW); delay(500); // Relachement du bouton ON/OFF digitalWrite(ONOFF, HIGH); // Chauffage de l'eau dans la cuve // Ajustez ces valeurs en fonction de votre cafetière pause(90); // 90 secondes (1 min 30 sec) // Indique que la cafetière est allumée allumageCafetiere = 1; } // Appui sur le bouton digitalWrite(bouton, LOW); delay(500); // Relachement du bouton digitalWrite(bouton, HIGH); // Préparation du café et chauffage de l'eau // Ajustez ces valeurs en fonction de votre cafetière if (bouton == SIMPLE_TASSE){ pause(70); // 70 secondes (1 min 10 sec) } else { pause(100); // 100 secondes (1 min 40 sec) } // Mise à jour du moment de la dernière utilisation derniereUtilisation = millis(); digitalWrite(LED_TEMOIN, HIGH); } void extinctionCafetiere(){ // Mise hors tension de la cafetière digitalWrite(ALIMENTATION, HIGH); // Indique que la cafetière est éteinte allumageCafetiere = 0; } void pause(int secondes){ // Faire clignoter la LED témoin en attendant le nb de secondes indiqué for (int i=0; i < secondes; i++){ digitalWrite(LED_TEMOIN, HIGH); delay(500); digitalWrite(LED_TEMOIN, LOW); delay(500); } } // Cafetiere_Bluetooth const int ALIMENTATION = 2; const int ONOFF = 3; const int SIMPLE_TASSE = 4; const int DOUBLE_TASSE = 5; const int LED_TEMOIN = 13; // Temps avant mise en veille de la cafetière (en minutes) const int VEILLE = 5; // Etat de la cafetière (0 éteinte, 1 allumée) boolean allumageCafetiere = 0; // Stockage du contenu du message char message = 0; // Moment de la derniere utilisation unsigned long derniereUtilisation; void setup() { Serial.begin(9600); // Initialisation des sorties pinMode(ALIMENTATION, OUTPUT); pinMode(ONOFF, OUTPUT); pinMode(SIMPLE_TASSE, OUTPUT); pinMode(DOUBLE_TASSE, OUTPUT); pinMode(LED_TEMOIN, OUTPUT); // Mise hors tension de la cafetière digitalWrite(ALIMENTATION, HIGH); // Les 3 boutons ne sont pas appuyés digitalWrite(ONOFF, HIGH); digitalWrite(SIMPLE_TASSE, HIGH); digitalWrite(DOUBLE_TASSE, HIGH); // La LED témoin est allumée digitalWrite(LED_TEMOIN, HIGH); } void loop() { // Réception du message en Bluetooth if (Serial.available()>0){ message = Serial.read(); switch (message) { // Simple tasse case '1': appuyer(SIMPLE_TASSE); break; // Double tasse case '2': appuyer(DOUBLE_TASSE); break; } message = 0; } // Si la cafetière est allumée et qu'elle n'a pas été utilisée depuis longtemps if ((millis() - derniereUtilisation) >= (VEILLE*60000) && allumageCafetiere == 1){ // Mise hors tension de la cafetière digitalWrite(ALIMENTATION, HIGH); // Indique que la cafetière est éteinte allumageCafetiere = 0; } } void appuyer(int bouton){ digitalWrite(LED_TEMOIN, LOW); // Si la cafetière est éteinte if (allumageCafetiere == 0){ // Mise sous tension de la cafetière digitalWrite(ALIMENTATION, LOW); delay(1000); // Appui sur le bouton ON/OFF pour allumer la cafetière digitalWrite(ONOFF, LOW); delay(500); // Relachement du bouton ON/OFF digitalWrite(ONOFF, HIGH); // Chauffage de l'eau dans la cuve // Ajustez ces valeurs en fonction de votre cafetière pause(90); // 90 secondes (1 min 30 sec) // Indique que la cafetière est allumée allumageCafetiere = 1; } // Appui sur le bouton digitalWrite(bouton, LOW); delay(500); // Relachement du bouton digitalWrite(bouton, HIGH); // Préparation du café et chauffage de l'eau // Ajustez ces valeurs en fonction de votre cafetière if (bouton == SIMPLE_TASSE){ pause(70); // 70 secondes (1 min 10 sec) } else { pause(100); // 100 secondes (1 min 40 sec) } // Mise à jour du moment de la dernière utilisation derniereUtilisation = millis(); digitalWrite(LED_TEMOIN, HIGH); } void pause(int secondes){ // Faire clignoter la LED témoin en attendant. le nb de secondes indiqué for (int i=0; i < secondes; i++){ digitalWrite(LED_TEMOIN, HIGH); delay(500); digitalWrite(LED_TEMOIN, LOW); delay(500); } }