Hola comunidad, quisiera preguntar como hago para hacer que al presionar un pushbutton se inicie una secuencia numérica del 0 al 9 y al presionar otro pushbutton se inicie otra secuencia del 9 al 0, sin importar la posición en la que la secuencia se encuentre, por ejemplo si se encuentra en el 4 (del 0 al 9), que se pase directo al 9 (del 9 al 0) y viceversa, si estoy en algún número del 9 al 0 que al presionar otro pushbutton se pase directo al 0 (del 0 al 9) para iniciar la secuencia, ya tengo el programa, y no es necesario seguir presionando el pushbutton para incrementar o decrementar la cuenta, el objetivo es que la cuenta sea automática
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int bs1 = 9; //bs1 = boton secuencia 1 (de 0 a 9)
int bs2 = 10; //bs2 = boton secuencia 2 (de 9 a 0)
void setup() {
pinMode (a, OUTPUT);
pinMode (b, OUTPUT);
pinMode (c, OUTPUT);
pinMode (d, OUTPUT);
pinMode (e, OUTPUT);
pinMode (f, OUTPUT);
pinMode (g, OUTPUT);
pinMode (bs1, INPUT);
pinMode (bs2, INPUT);
}
void loop () {
if (digitalWrite (bs1, HIGH))
{
//cero
digitalWrite (a, LOW);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
digitalWrite (g, HIGH);
delay (1000);
//uno
digitalWrite (a, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
delay (1000);
//dos
digitalWrite (a, LOW);
digitalWrite (c, HIGH);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (g, LOW);
delay (1000);
//tres
digitalWrite (c, LOW);
digitalWrite (e, HIGH);
delay (1000);
//cuatro
digitalWrite (a, HIGH);
digitalWrite (d, HIGH);
digitalWrite (f, LOW);
delay (1000);
//cinco
digitalWrite (a, LOW);
digitalWrite (b, HIGH);
digitalWrite (d, LOW);
delay (1000);
//seis
digitalWrite (e, LOW);
delay (1000);
//siete
digitalWrite (b, LOW);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
delay (1000);
//ocho
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
delay (1000);
//nueve
digitalWrite (e, HIGH);
delay (1000);
}
else{
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
}
if (digitalWrite (bs2, HIGH))
{
//nueve
digitalWrite (a, LOW);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, LOW);
digitalWrite (e, HIGH);
digitalWrite (f, LOW);
digitalWrite (g, LOW);
delay (1000);
//ocho
digitalWrite (e, LOW);
delay (1000);
//siete
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
delay (1000);
//seis
digitalWrite (b, HIGH);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
delay (1000);
//cinco
digitalWrite (e, HIGH);
delay(1000);
//cuatro
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (d, HIGH);
delay(1000);
//tres
digitalWrite (a, LOW);
digitalWrite (d, LOW);
digitalWrite (f, HIGH);
delay (1000);
//dos
digitalWrite (c, HIGH);
digitalWrite (e, LOW);
delay (1000);
//uno
digitalWrite (a, HIGH);
digitalWrite (c, LOW);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (g, HIGH);
delay (1000);
//cero
digitalWrite (a, LOW);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
delay (1000);
}
}
*Nota:
Estoy utilizando un display de 7 segmentos de ánodo común, por eso se iluminan en estado LOW y se apagan en HIGH
*Nota2:
estoy al tanto de que el if esta mal implementado, por eso quiero que me ayuden, modificando mi programa