Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * 1/ un timer qui dit que , des la mise sous tension , utilisant ou pas les poussoirs , 3 minutes plus tard tout est inactif ...
- * pour remettre en route , deconnecter reconnecter l'alim
- 2/ modifier les sorties "D" pour qu'elles soient bien associées aux bornes REL 1 REL 2 ET REL3
- c'est tout
- */
- volatile long int temps = 0;
- bool etat=false;// false=ARRET true =MARCHE
- //Relais
- const int relayMarche = 8;
- const int relayDetergent = 7;
- const int relayChauffage = 6;
- const int relayLavage=5;
- const int relayRincage=4;
- //Buttons
- const int buttonArret = 3; // Bouton ARRET
- const int buttonMarche = 2; // Bouton MARCHE
- //Etat
- #define ARRET 0
- #define MARCHE 1
- void messages(){
- //Il imprime les messages sur la sortie série RS232 de l’Arduino
- Serial.println("=== SYSTEME PRET ===");
- Serial.println("SEQUENCE OBLIGATOIRE : MARCHE -> DETERGENT -> RINCAGE -> ARRET");
- Serial.println("Etat actuel: ARRET - Appuyez sur MARCHE pour commencer");
- }
- void eteindreTout(){
- //Nous éteignons tous les relais.
- //digitalWrite(relayMarche,false);
- digitalWrite(relayDetergent,false);
- digitalWrite(relayChauffage,false);
- digitalWrite(relayLavage,false);
- digitalWrite(relayRincage,false) ;
- }
- void attente(int sec) {
- /*
- * Crée un temps de retard pour permettre au cycle d’activation du relais d’agir
- * et vérifie également si le bouton d’arrêt a été appuyé.
- */
- for (int i = 0; i < sec; i++) {
- if (digitalRead(buttonArret) == LOW) { // Button ARRET ?
- eteindreTout();
- digitalWrite(relayMarche,false);
- etat = false;
- break;
- }
- delay(1000);//1 sec
- }
- }
- void setup() {
- Serial.begin(9600);//Sortie serial terminal RS232 vitesse 9600
- //Buttons inputs
- pinMode(buttonMarche, INPUT_PULLUP);
- pinMode(buttonArret, INPUT_PULLUP);
- //Relais otuputs
- pinMode(relayMarche,OUTPUT);
- pinMode(relayDetergent,OUTPUT);
- pinMode(relayChauffage,OUTPUT);
- pinMode(relayLavage,OUTPUT);
- pinMode(relayRincage,OUTPUT);
- eteindreTout();//Nous éteignons tous les relais.
- messages();//imprime les messages
- }
- void loop() {
- //MARCHE
- while (digitalRead(buttonMarche)){};//Tant que le bouton de marche n’est pas appuyé, il reste bloqué ici dans une boucle infinie.
- digitalWrite (relayMarche,true);//active le relais DETERGENT
- Serial.println("MARCHE");
- etat=true;
- //DETERGENT
- if (etat){//MARCHE ?
- Serial.println("DETERGENT");
- digitalWrite (relayDetergent,true);//active le relais DETERGENT
- attente(5);//Active le relais pendant 5 secondes pour DETERGENT
- }
- //CHAUFFAGE
- if (etat){//MARCHE ?
- Serial.println("CHAUFFAGE");
- 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.
- digitalWrite (relayChauffage,true);//active le relais CHAUFFAGE
- attente(3);//Active le relais pendant 30 secondes pour CHAUFFAGE
- }
- //CICLE DE LAVAGE
- if (etat){//MARCHE ?
- Serial.println("LAVAGE");
- 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.
- digitalWrite (relayLavage,true);//active le relais LAVAGE
- attente(10);//Active le relais pendant 120 secondes pour LAVAGE
- }
- //RINÇAGE
- if (etat){//MARCHE ?
- Serial.println("RINÇAGE");
- 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.
- digitalWrite (relayRincage,1);//active le relais RINÇAGE
- attente(10);//Active le relais pendant 120 secondes pour LAVAGE
- }
- //ARRET
- Serial.println("ARRET");
- 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.
- digitalWrite (relayMarche,true);//active le relais DETERGENT
- etat = false;
- }
Add Comment
Please, Sign In to add comment