JUEGO DE LUCES


En este programa se muestra el uso de  un pulsador para  generar  el encendido y apagado de una secuencia de Leds, al presionar el pulsador genera un interrupción por cambio de estado en el pin 2, que a su vez permite incrementar un contador de pulsaciones,de este modo se realiza la secuencia de parpadeo de Leds por medio de los pines del Arduino.
  

   // EJEMPLO DE PROGRAMA PARA JUEGO DE LUCES CON LEDS


     int ledPin =  10;                   //DEFINICIÓN DE NOMBRES DE PINES 
     int ledPin1 = 11;     
     int ledPin2 = 12;
     int ledPin3 = 13;
     int pulsador = 2 ;                  // CONEXIÓN DEL PULSADOR
     int contador;                         // CONTADOR DE PULSACIONES
     unsigned long button_time = 0;      // VARIABLES DE GUARDADO DE TIEMPOS
     unsigned long last_button_time = 0; // VARIABLES DE COMPARACIÓN DE TIEMPOS
     
      void setup()
   {
       pinMode(ledPin, OUTPUT);             // configura el pin como salida
       pinMode(ledPin1, OUTPUT);           // configura el pin como salida
       pinMode(ledPin2, OUTPUT);           // configura el pin como salida
       pinMode(ledPin3, OUTPUT);           // configura el pin como salida 
       pinMode(pulsador, INPUT_PULLUP);    // PIN DE ENTRADA PARA EL PULSADOR 
      attachInterrupt(0, contar,CHANGE);  // INTERRUPCIÓN PIN 2(LOW ,CHANGE,RISING,FALLING) 
      contador =0;                                            // INICIO DE CONTADOR DE PULSACIONES

   }

  void loop()
  {
        
       if ( contador == 1 ) {                        // SI OPRIME EL PULSADOR UNA VEZ CONTINUA
         
      digitalWrite(ledPin, HIGH);           // EL LED PRENDE Y APAGA CADA 200mS DEL PIN 10
      delay(200);                    
      digitalWrite(ledPin, LOW);    
      delay(200);                                     
                                }
       if ( contador == 2 ) {                         // SI OPRIME EL PULSADOR POR SEGUNDA VEZ
         
      digitalWrite(ledPin1, HIGH);          // EL LED PRENDE Y APAGA CADA 200mS DEL PIN 11
      delay(200);                    
      digitalWrite(ledPin1, LOW);    
      delay(200);                                     
                              }  
      
      if ( contador == 3 ) {
         
      digitalWrite(ledPin2, HIGH);          // activa el LED (encendido)
      delay(200);                                         //temporizador 
      digitalWrite(ledPin2, LOW);           // desactiva el LED (apagado)
      delay(200);                                     
                              }         
              
      if ( contador == 4) {
         
      digitalWrite(ledPin3, HIGH);          // activa el LED (encendido) 
      delay(200);                                         //temporizador 
      digitalWrite(ledPin3, LOW);           // desactiva el LED (apagado)
      delay(200);                                     
                              }                
                                
       if ( contador >= 5 ) {  contador=1;} // SI PULSA POR QUINTA VEZ EL CONTADOR REINICIA                       
                                                                
                                
         }
      
      void contar(){                                 // FUNCIÓN DE INTERRUPCIÓN POR CAMBIO EN PIN 2       
       button_time = millis();                // FUNCIÓN PARA GENERAR TIEMPOS        
       if (button_time - last_button_time > 250){  //FUNCIONES PARA GENERAR 250ms
       Serial.println(button_time);                                 
       last_button_time = button_time;      
       contador++;                                   // INCREMENTO DE CONTADORES
                                                }   
          
                   }      


En el vídeo se muestra la simulación con PROTEUS





           

No hay comentarios.:

Publicar un comentario