Contador ascendente y descendente con botón y display 7 segmentos

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;
		}
	}
}

> Cita

Moderador
No doble postees o recibirás una sanción, sin poder ingresar por 1 día la primera vez.
Lee las normas del foro, por favor.