08-02-2015, 04:00 PM
Nada me saltan errores ._.
Añado:
El codigo antes citado y nada errores por todos lados cambio una cosa sale otra XD sobre todo los dicosos corchetes ... te paso el código original sin modificar.
Añado:
Código:
const int BtnDesbloqueo = 12; // boton de desbloqueo conectado al pin 12
int estadoBtnDesbloqueo;
int estadoBtnDesbloqueoAnterior;
El codigo antes citado y nada errores por todos lados cambio una cosa sale otra XD sobre todo los dicosos corchetes ... te paso el código original sin modificar.
Código:
/* se declaran las contantes para identificar cada led*/
const int r = 11;
const int a = 2;
const int b = 3;
const int c = 4;
const int d = 5;
const int e = 6;
const int f = 7;
const int g = 8;
const int BtnIncremento = 13; // boton de incremento conectadoa al pin 13
const int BtnDecremento = 10; // boton de decremento conectadoa al pin 10
const int BtnBloqueo = 9; // boton de bloqueo conectado al pin 9
const int tiempoAntirebote =10;
int cuenta =0; //lleva la cuenta
int estadoBtnIncremento;
int estadoBtnIncrementoAnterior;
int estadoBtnDecremento;
int estadoBtnDecrementoAnterior;
int estadoBtnBloqueo;
int estadoBtnBloqueoAnterior;
boolean bloqueo = false; // De inicio está desbloqueado, también se podría hacer con el estado
boolean antirebote (int pin ) {
int contador =0;
boolean estado; // guarda el estado del boton
boolean estadoAnterior; // guarda el ultimo estado del boton
do {
estado = digitalRead (pin);
if (estado != estadoAnterior ){ // comparamos el estado actual
contador =0; // reiniciamos el contador
estadoAnterior= estado;
}
else{
contador = contador +1; // aumentamos el contador en 1
}
delay (1);
}
while (contador < tiempoAntirebote);
return estado;
}
/* Metodo para elegir que numero mostrar en el display*/
void actualizarNumero(){
switch (cuenta) {
case 0:
/*Bloque para mostrar un 0*/
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(r, HIGH);
break;
case 1:
/*Bloque para mostrar un 1*/
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(r, LOW);
break;
case 2:
/*Bloque para mostrar un 2*/
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
break;
case 3:
/*Bloque para mostrar un 3*/
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
break;
case 4:
/*Bloque para mostrar un 4*/
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
break;
case 5:
/*Bloque para mostrar un 5*/
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
break;
case 6:
/*Bloque para mostrar un 6*/
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
break;
case 7:
/*Bloque para mostrar un 7*/
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(r, LOW);
break;
case 8:
/*Bloque para mostrar un 8*/
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
break;
case 9:
/*Bloque para mostrar un 9*/
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(r, LOW);
}
}
void setup(){
/*Declaramos los segmetos del display como salidas*/
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(r, OUTPUT);
/*Declaramos los botones como entradas*/
pinMode(BtnIncremento, INPUT);
pinMode(BtnDecremento, INPUT);
pinMode(BtnBloqueo, INPUT);
Serial.begin(9600);
}
void loop() {
estadoBtnBloqueo = digitalRead(BtnBloqueo);
Serial.println(estadoBtnBloqueo);
if (estadoBtnBloqueo != estadoBtnBloqueoAnterior) { // si hay cambio con respeto al estado
if (antirebote (BtnBloqueo) == HIGH){ //checamos si esta preionado y si lo esta
bloqueo = !bloqueo;
Serial.println("Entra en bloqueo");
}
}
estadoBtnBloqueoAnterior = estadoBtnBloqueo; // guardamos el estado del boton
estadoBtnIncremento = digitalRead(BtnIncremento);
Serial.println(estadoBtnIncremento);
if (estadoBtnIncremento != estadoBtnIncrementoAnterior) { // si hay cambio con respeto al estado
if (antirebote (BtnIncremento)){ //checamos si esta preionado y si lo esta
cuenta = cuenta + 4; //aumentamos la cuenta
if (cuenta > 9){
cuenta = 9;
}
}
}
estadoBtnIncrementoAnterior = estadoBtnIncremento; // guardamos el estado del boton
if (!bloqueo) { // Si está bloqueado, lo ignoramos, y en otro caso, lo leemos
estadoBtnDecremento = digitalRead(BtnDecremento); //leemos el estado del boton
Serial.println(estadoBtnDecremento);
if (estadoBtnDecremento != estadoBtnDecrementoAnterior) { // si hay cambio con respeto al estado anterior
if (antirebote (BtnDecremento)){ //si el boton esta presionado disminuimos la cuenta
cuenta--;
if (cuenta<0){
cuenta = 0;
}
}
}
estadoBtnDecrementoAnterior = estadoBtnDecremento; //guardamos el estado del boton
}
actualizarNumero(); //desplegamos la cuenta en el display
}