este es el código amigo:
la funcion de el es hacer que al presionar un pulsador aumente, y al presionar otro disminuya (la cuenta).
la funcion de el es hacer que al presionar un pulsador aumente, y al presionar otro disminuya (la cuenta).
Código (cpp) [Seleccionar]
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();
}