Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define PIN_DEBITMETRE 2
- #define PIN_ELECTROVANNE 4
- static unsigned int tempsFonctionnementElectrovanne = 60000; //1 minute
- static unsigned long tempsFonctionnementReprise = 600000L; //10 minutes
- unsigned long tempsEcoulerElectrovanne = 0;
- unsigned long tempsEcoulerReprise = 0;
- volatile unsigned int nbrTourDebimetre = 0 ;
- unsigned int electrovanneMarcheArret = 0; //0 pour arreter - 1 pour marche
- unsigned int pauseCirculation = 0; //0 pour normal - 1 pour pause
- //fonction en mode interuption qui se declenche a chanque impulsion du debimetre
- void cptageTourDebimetre(){
- nbrTourDebimetre++; //on augmente nbrTour a chaque impulsion de l'electrovanne.
- }
- void setup(){
- pinMode(PIN_DEBITMETRE, INPUT);
- pinMode(PIN_ELECTROVANNE, OUTPUT);
- attachInterrupt(digitalPinToInterrupt(PIN_DEBITMETRE), cptageTourDebimetre, RISING);
- }
- void loop(){
- if(!pauseCirculation){
- if(nbrTourDebimetre > 0 && !electrovanneMarcheArret ) {
- //on met en route l'e circulateur
- electrovanneMarcheArret = 1;
- tempsEcoulerElectrovanne=millis();
- nbrTourDebimetre = 0;
- digitalWrite(PIN_ELECTROVANNE, HIGH);
- }
- else if((millis() - tempsEcoulerElectrovanne) >= tempsFonctionnementElectrovanne && electrovanneMarcheArret) {
- electrovanneMarcheArret = 0 ;
- nbrTourDebimetre = 0;
- digitalWrite(PIN_ELECTROVANNE, LOW);
- tempsEcoulerReprise=millis();
- pauseCirculation = 1;
- }
- }
- else if( (millis() - tempsEcoulerReprise ) >= tempsFonctionnementReprise){
- nbrTourDebimetre = 0;
- pauseCirculation = 0;
- }
- }
Add Comment
Please, Sign In to add comment