Siguiendo con mis prácticas sobre Arduino Uno, ahora explicaré como he montado un contador de pulsaciones. Se trata de programar Arduino para que cada vez que se pulse un botón se incremente un contador de pulsaciones y se vayan encendiendo hasta tres led. En la cuarta pulsacion se resetea el contado y se apagan todos los leds.
El montaje es:
El circuito es:
El código es:
/*
CUARTO EJERCICIO 2015-02-26
Finalidad. Se trata de montar un contador de pulsaciones con un
boton y tres led. Cuando se pulse una vez se encendera el primer
led, cuando se pulse dos veces se encendera el segundo led, cuando
se pulse una tercera vez se encendera el tercer led y cuando se
pulse una cuarta vez se apagaran todos los leds reinicindose el ciclo.
*/
//Vamos a colocar la entrada del boton en el pin 10
const int BOTONPIN10 = 10;
//Vamos a colocar los led en las salidas 11, 12 y 13
const int LEDPIN11 = 11;
const int LEDPIN12 = 12;
const int LEDPIN13 = 13;
//Variable que controla el numero de leds encencidos
int numled=0;
//Variables que controlan el estado del boton para evitar rebotes
int estadoBoton=0;
int estadoBotonAnterior=0;
void setup() {
// Inicializamos el pin del boton como entrada
pinMode(BOTONPIN10, INPUT);
// Inicializamos los tres pin de los led como salidas
pinMode(LEDPIN11, OUTPUT);
pinMode(LEDPIN12, OUTPUT);
pinMode(LEDPIN13, OUTPUT);
//Iniciamos comunicacion con puerto serie del PC
//para monitorizar las pulsaciones
Serial.begin(1200);
}
void loop(){
//Leemos el boton
estadoBoton = digitalRead(BOTONPIN10);
//Vemos si ha cambiado el estado del boton
if(estadoBoton!=estadoBotonAnterior){
//Si el estado ha cambiado incrementamos el numero de leds encendidos
if (estadoBoton==HIGH){
numled++;
}
}
//Cambiamos el estado anterior del boton
estadoBotonAnterior=estadoBoton;
//Monitorizamos el estado de los botones y el numero de leds
Serial.print(estadoBoton);
Serial.print("-");
Serial.print(estadoBotonAnterior);
Serial.print("-");
Serial.print(numled);
Serial.print("\n");
//Encendemos los leds necesarios segun el valor de numled
if (numled>=0){
if (numled==1){
//encendemos el primer led
digitalWrite(LEDPIN11, HIGH);
} else if (numled==2){
//encendemos el primer y el segundo led
digitalWrite(LEDPIN11, HIGH);
digitalWrite(LEDPIN12, HIGH);
} else if (numled==3){
//encendemos los tres leds
digitalWrite(LEDPIN11, HIGH);
digitalWrite(LEDPIN12, HIGH);
digitalWrite(LEDPIN13, HIGH);
} else {
//Apagamos todos los leds
digitalWrite(LEDPIN11, LOW);
digitalWrite(LEDPIN12, LOW);
digitalWrite(LEDPIN13, LOW);
numled=0;
}
}
}
Un video del programita funcionando:
Eso es todo, ya veremos qué se nos ocurre mañana
Un saludo