// Definir pines para cada segmento del display (A-G)
const int segmentos[] = {1, 2, 3, 4, 5, 6, 7}; // Pines 1 a 7 para los segmentos A-G
const int pinSensor = 10; // Pin para el sensor digital
int contador = 9; // Valor inicial del contador, empieza en 9
// Patrones para los números 0-9 en un display de 7 segmentos (A-G)
const byte numeros[] = {
0b1111110, // 0
0b0110000, // 1
0b1101101, // 2
0b1111001, // 3
0b0110011, // 4
0b1011011, // 5
0b1011111, // 6
0b1110000, // 7
0b1111111, // 8
0b1111011 // 9
};
void setup() {
// Configuración de pines de segmentos como salida
for (int i = 0; i < 7; i++) {
pinMode(segmentos[i], OUTPUT);
}
// Configuración del pin del sensor como entrada
pinMode(pinSensor, INPUT); // Sensor digital que recibe señal HIGH o LOW
}
void mostrarNumero(int numero) {
byte patron = numeros[numero]; // Obtener el patrón para el número
for (int i = 0; i < 7; i++) {
digitalWrite(segmentos[i], (patron >> (6 - i)) & 1); // Actualizar cada segmento
}
}
void loop() {
// Leer el estado del sensor digital
int sensorEstado = digitalRead(pinSensor); // Sensor digital HIGH o LOW
if (sensorEstado == HIGH) {
// Si el sensor está en HIGH, se decrementa el contador
contador--;
// Verificar si el contador ha llegado a 0, si es así, reiniciar a 9
if (contador < 1) {
contador = 9; // Reiniciar el contador a 9
}
// Mostrar el número en el display de 7 segmentos
mostrarNumero(contador);
delay(100); // Retardo de 0.1 segundos para el conteo
} else {
// Si el sensor está en LOW, no hacer nada
// De esta forma, el contador solo avanza cuando el sensor está activado (HIGH)
mostrarNumero(contador); // Mostrar el número actual en el display
}
}