AntonioVillanueva

Projet Marco

Jun 2nd, 2025
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * 1/ un timer qui dit que , des la mise sous tension , utilisant ou pas les poussoirs , 3 minutes plus tard tout est inactif ...
  3.  * pour remettre en route , deconnecter  reconnecter l'alim
  4. 2/ modifier les sorties "D" pour qu'elles soient bien associées aux bornes REL 1 REL 2 ET REL3
  5. c'est tout
  6.  */
  7.  
  8.  
  9. volatile long int temps = 0;
  10. bool  etat=false;// false=ARRET true =MARCHE
  11.  
  12. //Relais
  13. const int relayMarche = 8;
  14. const int relayDetergent = 7;
  15. const int relayChauffage = 6;
  16. const int relayLavage=5;
  17. const int relayRincage=4;
  18.  
  19. //Buttons
  20. const int buttonArret = 3;    // Bouton ARRET
  21. const int buttonMarche = 2;    // Bouton MARCHE
  22.  
  23. //Etat
  24. #define ARRET 0
  25. #define MARCHE 1
  26.  
  27.  
  28. void messages(){
  29.   //Il imprime les messages sur la sortie série RS232 de l’Arduino
  30.   Serial.println("=== SYSTEME PRET ===");
  31.   Serial.println("SEQUENCE OBLIGATOIRE : MARCHE -> DETERGENT -> RINCAGE -> ARRET");
  32.   Serial.println("Etat actuel: ARRET - Appuyez sur MARCHE pour commencer");
  33.  
  34. }
  35.  
  36. void eteindreTout(){
  37.   //Nous éteignons tous les relais.
  38.   //digitalWrite(relayMarche,false);
  39.   digitalWrite(relayDetergent,false);
  40.   digitalWrite(relayChauffage,false);
  41.   digitalWrite(relayLavage,false);
  42.   digitalWrite(relayRincage,false) ;
  43.  
  44. }
  45. void attente(int sec) {
  46.   /*
  47.    * Crée un temps de retard pour permettre au cycle d’activation du relais d’agir
  48.    * et vérifie également si le bouton d’arrêt a été appuyé.
  49.    */
  50.   for (int i = 0; i < sec; i++) {
  51.     if (digitalRead(buttonArret) == LOW) { // Button ARRET ?
  52.       eteindreTout();
  53.       digitalWrite(relayMarche,false);
  54.       etat = false;
  55.       break;
  56.     }
  57.     delay(1000);//1 sec
  58.   }
  59. }
  60.  
  61. void setup() {
  62.   Serial.begin(9600);//Sortie serial terminal RS232 vitesse 9600
  63.  
  64.   //Buttons inputs
  65.   pinMode(buttonMarche, INPUT_PULLUP);
  66.   pinMode(buttonArret, INPUT_PULLUP);
  67.  
  68.   //Relais otuputs
  69.   pinMode(relayMarche,OUTPUT);
  70.   pinMode(relayDetergent,OUTPUT);
  71.   pinMode(relayChauffage,OUTPUT);
  72.   pinMode(relayLavage,OUTPUT);
  73.   pinMode(relayRincage,OUTPUT);        
  74.  
  75.   eteindreTout();//Nous éteignons tous les relais.
  76.   messages();//imprime les messages
  77.  
  78. }
  79.  
  80. void loop() {
  81.   //MARCHE
  82.   while  (digitalRead(buttonMarche)){};//Tant que le bouton de marche n’est pas appuyé, il reste bloqué ici dans une boucle infinie.
  83.   digitalWrite (relayMarche,true);//active le relais DETERGENT
  84.   Serial.println("MARCHE");
  85.   etat=true;
  86.  
  87.   //DETERGENT
  88.   if (etat){//MARCHE ?
  89.     Serial.println("DETERGENT");  
  90.     digitalWrite (relayDetergent,true);//active le relais DETERGENT
  91.     attente(5);//Active le relais pendant 5 secondes pour DETERGENT
  92.   }
  93.  
  94.   //CHAUFFAGE
  95.   if (etat){//MARCHE ?  
  96.     Serial.println("CHAUFFAGE");  
  97.     eteindreTout();//Avant de passer à un autre état, j’éteins l’état précédent ; je le fais en même temps en éteignant tous les relais.
  98.     digitalWrite (relayChauffage,true);//active le relais CHAUFFAGE
  99.     attente(3);//Active le relais pendant 30 secondes pour CHAUFFAGE  
  100.   }
  101.  
  102.   //CICLE DE LAVAGE
  103.   if (etat){//MARCHE ?  
  104.     Serial.println("LAVAGE");  
  105.     eteindreTout();//Avant de passer à un autre état, j’éteins l’état précédent ; je le fais en même temps en éteignant tous les relais.  
  106.     digitalWrite (relayLavage,true);//active le relais LAVAGE
  107.     attente(10);//Active le relais pendant 120 secondes pour LAVAGE  
  108.   }
  109.  
  110.   //RINÇAGE
  111.   if (etat){//MARCHE ?  
  112.     Serial.println("RINÇAGE");  
  113.     eteindreTout();//Avant de passer à un autre état, j’éteins l’état précédent ; je le fais en même temps en éteignant tous les relais.  
  114.     digitalWrite (relayRincage,1);//active le relais RINÇAGE  
  115.     attente(10);//Active le relais pendant 120 secondes pour LAVAGE  
  116.   }
  117.  
  118.   //ARRET
  119.   Serial.println("ARRET");  
  120.   eteindreTout();//Avant de passer à un autre état, j’éteins l’état précédent ; je le fais en même temps en éteignant tous les relais.
  121.   digitalWrite (relayMarche,true);//active le relais DETERGENT
  122.   etat = false;
  123. }
Add Comment
Please, Sign In to add comment