Evitar rebotes de los pulsadores – Ejemplo con Arduino Nº 09

En algunos casos es necesario evitar rebotes de los pulsadores, como por ejemplo en el caso de contadores, los rebotes se generan por problemas mecánicos o físicos, estos rebotes es posible que la placa de Arduino los lea como múltiples pulsaciones en un corto periodo de tiempo, consiguiendo así engañar al programa y c0ntar tres o cuatro pulsaciones en vez de una.

En este ejemplo te muestro como conseguir evitar el efecto de los rebotes mediante software, para ello comprobaremos varias veces el estado de la entrada en un muy corto periodo de tiempo, para asegurar que el botón ha sido presionado, para ello utilizaremos de nuevo la función millis() y un periodo de tiempo en el que no se contarán los rebotes del pulsador.

En este ejemplo, cada vez que le des al pulsador cambiará el estado del Led, si está encendido se apagará y si está apagado se encenderá.

CIRCUITO:

Para este circuito utilizaremos de nuevo el circuito utilizado en el ejemplo de entradas digitales.

CÓDIGO:

const int Boton=2;

const int Led=13;

int EstadoDelLed=HIGH;

int EstadoDelBoton;

int EstadoAnteriorDelLed=LOW;

unsigned long TiempoDeLaUltimaPulsacion=0;

unsigned long MargenDePulsacion=50;

void setup()

{

                pinMode(Boton, INPUT);

                pinMode(Led, OUTPUT);

                digitalWrite(Led, EstadoDelLed);

}

void loop()

{

int Lectura=digitalRead(Boton);

if (Lectura !=EstadoAnteriorDelLed)

{

TiempoDeLaUltimaPulsacion=millis();

}

                If((millis() – TiempoDeLaUltimaPulsacion) > MargenDePulsacion)

{

if(Lectura != EstadoDelBoton)

                {

                EstadoDelBoton=Lectura;

                If(EstadoDelBoton=HIGH)

                {

                                EstadoDelLed= ¡EstadoDelLed;

}

}

}

}

Comentarios

Deja un comentario