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