Hola, estoy aprendiendo Arduino y no encuentro solución a un problema que tengo, es un display de de 7 segmento con un contador decimal de 0 a 9 y de 9 a 0, cuando el contador este descendentemente solo me muestra numero pares, hasta ahi todo bien, cuando programo el botón para que pause el contador y ejecuto el display no me muestra nada, me podrían ayudar si es que estoy escribiendo mal el o código o me falta agregar otra librería.
Estoy usando un emulador: Virtual Breadboard.
import muvium.compatibility.arduino.*;
public class Class0 extends Arduino{
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 8;
int g = 7;
int pt = 9;
int boton = 12;
int contador = 0;
int direccion = 1;
public void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(pt, INPUT);
pinMode(boton, INPUT_PULLUP);
}
public void escribirEnElDisplay(int va, int vb, int vc, int vd, int ve, int vf, int vg) {
digitalWrite(a, va);
digitalWrite(b, vb);
digitalWrite(c, vc);
digitalWrite(d, vd);
digitalWrite(e, ve);
digitalWrite(f, vf);
digitalWrite(g, vg);
}
public void loop() {
// Leer el estado del botón
int estadoBoton = digitalRead(boton);
// Si el botón está presionado (asumiendo LOW significa presionado)
if (estadoBoton == LOW) {
// Pausar el contador, no hacer nada
return;
}
// Si el botón no está presionado, continuar con el contador
switch (contador) {
case 0:
escribirEnElDisplay(1, 1, 1, 1, 1, 1, 0);
break;
case 1:
if (direccion == 1) {
escribirEnElDisplay(0, 1, 1, 0, 0, 0, 0);
} else {
contador += direccion;
return;
}
break;
case 2:
escribirEnElDisplay(1, 1, 0, 1, 1, 0, 1);
break;
case 3:
if (direccion == 1) {
escribirEnElDisplay(1, 1, 1, 1, 0, 0, 1);
} else {
contador += direccion;
return;
}
break;
case 4:
escribirEnElDisplay(0, 1, 1, 0, 0, 1, 1);
break;
case 5:
if (direccion == 1) {
escribirEnElDisplay(1, 0, 1, 1, 0, 1, 1);
} else {
contador += direccion;
return;
}
break;
case 6:
escribirEnElDisplay(1, 0, 1, 1, 1, 1, 1);
break;
case 7:
if (direccion == 1) {
escribirEnElDisplay(1, 1, 1, 0, 0, 0, 0);
} else {
contador += direccion;
return;
}
break;
case 8:
escribirEnElDisplay(1, 1, 1, 1, 1, 1, 1);
break;
case 9:
if (direccion == 1) {
escribirEnElDisplay(1, 1, 1, 1, 0, 1, 1);
} else {
contador += direccion;
return;
}
break;
}
delay(1000);
contador += direccion;
if (contador > 9) {
direccion = -1;
contador = 8;
} else if (contador < 0) {
direccion = 1;
}
}
}```
[https://drive.google.com/drive/folders/1nC84btLGGQ-RwrmftEgPybL-z5HVXbnd?usp=sharing](https://drive.google.com/drive/folders/1nC84btLGGQ-RwrmftEgPybL-z5HVXbnd?usp=sharing)