granteeric

petit code circulateur

Jun 12th, 2022 (edited)
929
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define PIN_DEBITMETRE          2
  2. #define PIN_ELECTROVANNE        4
  3.  
  4.  
  5. static unsigned int tempsFonctionnementElectrovanne = 60000; //1 minute
  6. static unsigned long tempsFonctionnementReprise = 600000L; //10 minutes
  7.  
  8. unsigned long tempsEcoulerElectrovanne = 0;
  9. unsigned long tempsEcoulerReprise = 0;
  10. volatile unsigned int nbrTourDebimetre = 0 ;
  11. unsigned int electrovanneMarcheArret = 0;                //0 pour arreter  - 1 pour marche
  12. unsigned int pauseCirculation = 0;                //0 pour normal  - 1 pour pause
  13.  
  14.  
  15. //fonction en mode interuption qui se declenche a chanque impulsion du debimetre
  16. void cptageTourDebimetre(){
  17.   nbrTourDebimetre++;       //on augmente nbrTour a chaque impulsion de l'electrovanne.
  18. }
  19.  
  20.  
  21.  
  22. void setup(){
  23.   pinMode(PIN_DEBITMETRE, INPUT);
  24.   pinMode(PIN_ELECTROVANNE, OUTPUT);
  25.   attachInterrupt(digitalPinToInterrupt(PIN_DEBITMETRE), cptageTourDebimetre, RISING);
  26. }
  27.  
  28. void loop(){
  29.   if(!pauseCirculation){
  30.     if(nbrTourDebimetre > 0 && !electrovanneMarcheArret ) {
  31.         //on met en route l'e circulateur
  32.         electrovanneMarcheArret = 1;
  33.         tempsEcoulerElectrovanne=millis();
  34.         nbrTourDebimetre = 0;
  35.         digitalWrite(PIN_ELECTROVANNE, HIGH);
  36.     }
  37.     else if((millis() - tempsEcoulerElectrovanne) >=  tempsFonctionnementElectrovanne && electrovanneMarcheArret) {
  38.         electrovanneMarcheArret = 0 ;
  39.         nbrTourDebimetre = 0;
  40.         digitalWrite(PIN_ELECTROVANNE, LOW);
  41.         tempsEcoulerReprise=millis();
  42.         pauseCirculation = 1;
  43.     }
  44.   }
  45.   else if( (millis() - tempsEcoulerReprise ) >= tempsFonctionnementReprise){
  46.     nbrTourDebimetre = 0;
  47.     pauseCirculation = 0;
  48.   }
  49.  
  50. }
Add Comment
Please, Sign In to add comment