Nwcwsito que me ayuden con un problema que tengo ya que necesito hacer un pushbutton que al presionarlo el display me vuelva a cero sin importar en que numero este y tengo el siguiente codigo el cual solo cuenta con dos botones uno para el aumento y el otro para el decremento.
const int pulsadorIncremento = 6; // Pin digital para el pulsador de incremento
const int pulsadorDecremento = 5; // Pin digital para el pulsador de decremento
const int tiempoAntirrebote = 10; // Variable para almacenar el tiempo antirrebote
// Variables necesarias para los cálculos internos
int cuenta = 0;
int estadoPulsadorIncremento;
int estadoPulsadorAnteriorIncremento;
int estadoPulsadorDecremento;
int estadoPulsadorAnteriorDecremento;
// Función antirrebote
boolean antirrebote(int pin)
{
int contador = 0;
boolean estado;
boolean estadoAnterior;
do
{
estado = digitalRead(pin);
if(estado != estadoAnterior)
{
contador = 0;
estadoAnterior = estado;
}
else
{
contador = contador+ 1;
}
delay(1);
} while(contador < tiempoAntirrebote);
return estado;
}
// Función del display: Se reciben 7 variables y se asignan a cada una de las salidas
void Costa (int a, int b, int c, int d, int e, int f, int g)
{
digitalWrite (7,a);
digitalWrite (8,b);
digitalWrite (9,c);
digitalWrite (10,d);
digitalWrite (11,e);
digitalWrite (12,f);
digitalWrite (4,g);
}
// Función que actualiza el número que aparece en el display de 7 segmentos
void actualizarNumero()
{
switch(cuenta){
case 0 : Costa(0,0,0,0,0,0,1);break;
case 1 : Costa(1,0,0,1,1,1,1);break;
case 2 : Costa(0,0,1,0,0,1,0);break;
case 3 : Costa(0,0,0,0,1,1,0);break;
case 4 : Costa(1,0,0,1,1,0,0);break;
case 5 : Costa(0,1,0,0,1,0,0);break;
case 6 : Costa(1,1,0,0,0,0,0);break;
case 7 : Costa(0,0,0,1,1,1,1);break;
case 8 : Costa(0,0,0,0,0,0,0);break;
case 9 : Costa(0,0,0,1,1,0,0);break;
case 10 : Costa(0,0,0,1,0,0,0);break;
case 11 : Costa(1,1,0,0,0,0,0);break;
case 12 : Costa(0,1,1,0,0,0,1);break;
case 13 : Costa(1,0,0,0,0,1,0);break;
case 14 : Costa(0,1,1,0,0,0,0);break;
case 15 : Costa(0,1,1,1,0,0,0);break;
}
}
void setup()
{
// Asignación de los pines digitales para el display de 7 segmentos como salidas
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(4, OUTPUT);
// Asignación de los pines digitales para los pulsadores como entradas
pinMode(pulsadorIncremento, INPUT);
pinMode(pulsadorDecremento, INPUT);
}
void loop()
{
// Leemos el estado del pulsador de incremento
estadoPulsadorIncremento = digitalRead(pulsadorIncremento);
// Si hay un cambio en el estado del pulsador de incremento
if(estadoPulsadorIncremento != estadoPulsadorAnteriorIncremento)
{
// y si se ha eliminado ya el rebote del pulsador de incremento
if(antirrebote(pulsadorIncremento))
{
// Se incrementa la cuenta en una unidad
cuenta++;
// Si la cuenta es mayor que 9, permanece en 9.
if(cuenta > 15)
{
cuenta = 15;
}
}
}
// Actualizamos el estado anterior del pulsador de incremento
estadoPulsadorAnteriorIncremento = estadoPulsadorIncremento;
// Leemos el estado del pulsador de decremento
estadoPulsadorDecremento = digitalRead(pulsadorDecremento);
// Si hay un cambio en el estado del pulsador de decremento
if(estadoPulsadorDecremento != estadoPulsadorAnteriorDecremento)
{
// y si se ha eliminado ya el rebote del pulsador de decremento
if(antirrebote(pulsadorDecremento))
{
// Se decrementa la cuenta en una unidad
cuenta--;
// Si la cuenta es menor que 0, permanece en 0.
if(cuenta < 0)
{
cuenta = 0;
}
}
}
// Actualizamos el estado anterior del pulsador de decremento
estadoPulsadorAnteriorDecremento = estadoPulsadorDecremento;
// Actualizamos el número que aparece en el display de 7 segmentos
actualizarNumero();
}