Buenas!
Soy nueva en arduino y tengo que hacer el proyecto de realizar un contador de 0 a 99 segundos con dos displays de dos segmentos, utilizando ademas tres botones que sumen segundos, resten segundos, y reinicien el contador
genere el codigo de mil maneras y no logro darme cuenta de los errores que me faltan
Aqui adjunto el codigo
#define A 12
#define B 13
#define C 7
#define D 8
#define E 9
#define F 11
#define G 10
#define MAS 4
#define MENOS 3
#define RESET 5
#define UNIDAD A4
#define DECENA A5
#define APAGADO 0
#define TIMEDISPLAYON 10
int numero = 0;
int mas = 1;
int masAntes = 1;
int menos = 1;
int menosAntes = 1;
int reset = 1;
int resetAntes = 1;
void setup()
{
pinMode(MAS, INPUT_PULLUP);
pinMode(MENOS, INPUT_PULLUP);
pinMode(RESET, INPUT_PULLUP);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(UNIDAD, OUTPUT);
pinMode(DECENA, OUTPUT);
Serial.begin(9600);
}
void loop() {
iniciarContador(numero);
int presionado = botonPresionado();
if (presionado == MAS) {
numero++;
if (numero > 99)
numero = 0;
} else if (presionado == MENOS) {
numero--;
if (numero < 0)
numero = 99;
} else if (presionado == RESET) {
numero = 0;
}
delay(25);
}
void verEnDisplay(int numero) {
apagarTodosDisplays();
switch(numero) {
case 0:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
break;
case 1:
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
delay(25);
break;
case 2:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(G, HIGH);
digitalWrite(E, HIGH);
digitalWrite(D, HIGH);
break;
case 3:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(G, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
break;
case 4:
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
break;
case 5:
digitalWrite(A, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
break;
case 6:
digitalWrite(A, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
break;
case 7:
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
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(F, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
break;
}
}
void digitoEncendido(int numero) {
if (numero == UNIDAD) {
digitalWrite(UNIDAD, LOW);
digitalWrite(DECENA, HIGH);
delay(TIMEDISPLAYON);
} else if (numero == DECENA) {
digitalWrite(UNIDAD, HIGH);
digitalWrite(DECENA, LOW);
delay(TIMEDISPLAYON);
} else {
digitalWrite(UNIDAD, HIGH);
digitalWrite(DECENA, HIGH);
}
}
void iniciarContador(int numero) {
digitoEncendido(APAGADO);
verEnDisplay(numero / 10);
digitoEncendido(DECENA);
digitoEncendido(APAGADO);
verEnDisplay(numero - 10 * ((int)numero / 10));
digitoEncendido(UNIDAD);
}
int botonPresionado(void) {
mas = digitalRead(MAS);
menos = digitalRead(MENOS);
reset = digitalRead(RESET);
if (mas == 1)
masAntes = 1;
if (menos)
menosAntes = 1;
if (reset)
resetAntes = 1;
if (mas == 0 && mas != masAntes) {
masAntes = mas;
return mas;
}
if (menos == 0 && menos != menosAntes) {
menosAntes = menos;
return menos;
}
if (reset == 0 && reset != resetAntes) {
resetAntes = reset;
return reset;
}
return 0;
}
void apagarTodosDisplays() {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}