domenica 3 agosto 2014

Candeliere votivo.

Annotazioni: vedi lo sketch Pausa.
Senza le variabili acceso1...acceso6 il LOOp so blocca dopo un certo numero di cicli.
NinoAL
       
 
 
 
 /* Candeliere votivo.
          Alla pressione del pulsante la
          relativa candela rimane accesa
          per n. minuti */
       # define CONTA          2
       # define LED1           8
       # define LED2           9
       # define LED3          10
       # define LED4          11     
       # define LED5          12
       # define LED6          13
     
       int ValueConta        = 0;
       int lastValueConta    = 0;
       int contaImpulsi      = 0;
       int ValueUno          = 1;
       int ValueDue          = 2;
       int ValueTre          = 3;
       int ValueQuattro      = 4;
       int ValueCinque       = 5;
       int ValueSei          = 6;
       
       byte acceso1 = LOW;
       byte acceso2 = LOW;
       byte acceso3 = LOW;
       byte acceso4 = LOW;
       byte acceso5 = LOW;
       byte acceso6 = LOW;
       
       unsigned long iMillis1 = 0;
       unsigned long iMillis2 = 0;
       unsigned long iMillis3 = 0;
       unsigned long iMillis4 = 0;
       unsigned long iMillis5 = 0;
       unsigned long iMillis6 = 0;
      
       int TempoON           =  3000;
       
       void setup() 
           { pinMode(CONTA,     INPUT );
             pinMode (LED1,     OUTPUT);
             pinMode (LED2,     OUTPUT);   
             pinMode (LED3,     OUTPUT);
             pinMode (LED4,     OUTPUT);             
             pinMode (LED5,     OUTPUT);
             pinMode (LED6,     OUTPUT); }
      
       void loop() {
      
      //---------- Leggi pezzi su Pin2 -------------------     
            ValueConta  = digitalRead(CONTA); 
            if ( ValueConta != lastValueConta) 
               { if ( ValueConta == HIGH)
                    { contaImpulsi++;
                    delay(20);    }}// DebounceTime
            lastValueConta = ValueConta;

           if ( ValueConta == HIGH && acceso1 == LOW && contaImpulsi==ValueUno) 
              { digitalWrite(LED1, HIGH);
                acceso1 = HIGH;
                iMillis1 = millis(); }
           if ( acceso1 == HIGH && (millis()-iMillis1) > TempoON)
              { digitalWrite(LED1, LOW);
                acceso1 = LOW; }
            
           if ( ValueConta == HIGH && acceso2 == LOW && contaImpulsi==ValueDue) 
              { digitalWrite(LED2, HIGH);
                acceso2 = HIGH;
                iMillis2 = millis(); }
           if ( acceso2 == HIGH && (millis()-iMillis2) > TempoON)
              { digitalWrite(LED2, LOW);
                acceso2 = LOW; }           
          
           if ( ValueConta == HIGH && acceso3 == LOW && contaImpulsi==ValueTre) 
              { digitalWrite(LED3, HIGH);
                acceso3 = HIGH;
                iMillis3 = millis(); }
           if ( acceso3 == HIGH && (millis()-iMillis3) > TempoON)
              { digitalWrite(LED3, LOW);
                acceso3 = LOW; }
            
           if ( ValueConta == HIGH && acceso4 == LOW && contaImpulsi==ValueQuattro) 
              { digitalWrite(LED4, HIGH);
                acceso4 = HIGH;
                iMillis4 = millis(); }
           if ( acceso4 == HIGH && (millis()-iMillis4) > TempoON)
              { digitalWrite(LED4, LOW);
                acceso4 = LOW; }             
         
           if ( ValueConta == HIGH && acceso5 == LOW && contaImpulsi==ValueCinque) 
              { digitalWrite(LED5, HIGH);
                acceso5 = HIGH;
                iMillis5 = millis(); }
           if ( acceso5 == HIGH && (millis()-iMillis5) > TempoON)
              { digitalWrite(LED5, LOW);
                acceso5 = LOW; }
            
           if ( ValueConta == HIGH && acceso6 == LOW && contaImpulsi==ValueSei) 
              { digitalWrite(LED6, HIGH);
                acceso6 = HIGH;
                iMillis6 = millis(); }
           if ( acceso6 == HIGH && (millis()-iMillis6) > TempoON)
              { digitalWrite(LED6, LOW);
                acceso6 = LOW; }   
      
          if ( contaImpulsi > 5)
             { contaImpulsi= 0; }     
       }

Nessun commento:

Posta un commento