la funcion de el es hacer que al presionar un pulsador aumente, y al presionar otro disminuya (la cuenta).
Código
int a=2; //segmentos del display int b=3; int c=4; int d=5; int e=6; int f=7; int g=8; int botincremento=9;//boton de incremento int botdecremento=10;//boton de decremento int timeAntirebote=15; int cuenta=0;//lleva la cuenta int estadobotincremento; int estadobotdecremento; int estadobotantincremento; int estadobotantdecremento; boolean antirebote(int pin){ int contador=0; boolean estado; //guarda el estaado del boton boolean estadoAnterior;//guarda el ultimo estado del boton do { estado=digitalRead(pin); if (estado != estadoAnterior){ contador=0; estadoAnterior = estado;//reiniciamos el contador } else{ contador = contador + 1;//aumentamos el contador en 1 } delay(1); }while(contador < timeAntirebote); return estado; } void setup(){ Serial.begin(9600); pinMode(a, OUTPUT);//los declaramos como salidas pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(botincremento,INPUT);//los botones los declaramos como salidas pinMode(botdecremento,INPUT); } void actualizarNumero(){ switch(cuenta){//pregunta por el valor de una variable que nosotros le digamos. case 0: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); break;//de no tener break, seguirá realziando todas las funciones. case 1: digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); break; case 2: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, HIGH); break; case 3: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); break; case 4: digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; case 5: digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; case 6: digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; case 7: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); break; case 8: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; case 9: digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, HIGH); break; } } void loop() { estadobotincremento=digitalRead(botincremento);//leemos el boton if(estadobotincremento !=estadobotantincremento){//si hay cambio respecto al estado anterior if(antirebote(botincremento)){//vemos si esta presionado cuenta++;//aumentamos la cuenta if(cuenta>9){ cuenta=0; } } } estadobotantincremento = estadobotincremento;//guardamos el estado del boton estadobotdecremento=digitalRead(botdecremento);//leemos el estado del boton if(estadobotdecremento != estadobotantdecremento){ if(antirebote(botdecremento)){ cuenta--;//disminuimos la cuenta if(cuenta<0){ cuenta=9; } } } estadobotantdecremento = estadobotdecremento; actualizarNumero(); }