// Pines de segmentos
const int segmentoA = 2;
const int segmentoB = 3;
const int segmentoC = 4;
const int segmentoD = 5;
const int segmentoE = 6;
const int segmentoF = 7;
const int segmentoG = 8;
// Mapa de los números en el display de 7 segmentos
const bool digitos[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
int contador = 0; // Valor inicial del conteo
bool ascendente = true; // Dirección del conteo (ascendente o descendente)
int pinBoton = 10; // Pin para el botón
bool enPausa = false; // Estado de pausa
void setup() {
// Configurar los pines de los segmentos como salida
pinMode(segmentoA, OUTPUT);
pinMode(segmentoB, OUTPUT);
pinMode(segmentoC, OUTPUT);
pinMode(segmentoD, OUTPUT);
pinMode(segmentoE, OUTPUT);
pinMode(segmentoF, OUTPUT);
pinMode(segmentoG, OUTPUT);
// Configurar el pin del botón
pinMode(pinBoton, INPUT_PULLUP);
}
void loop() {
if (digitalRead(pinBoton) == LOW) { // Botón presionado
enPausa = true;
} else {
enPausa = false;
}
if (!enPausa) {
mostrarNumero(contador); // Muestra el número en el display
delay(1000); // Retardo de 1 segundo para el conteo
// Actualizar el valor del conteo según la dirección
if (ascendente) {
contador++;
if (contador > 9) { // Cuando alcanza 9, cambia a descenso
contador = 9;
ascendente = false;
}
} else {
contador--;
if (contador < 0) { // Cuando alcanza 0, cambia a ascenso
contador = 0;
ascendente = true;
}
}
}
}
// Función para mostrar un número en el display de 7 segmentos
void mostrarNumero(int numero) {
digitalWrite(segmentoA, digitos[numero][0]);
digitalWrite(segmentoB, digitos[numero][1]);
digitalWrite(segmentoC, digitos[numero][2]);
digitalWrite(segmentoD, digitos[numero][3]);
digitalWrite(segmentoE, digitos[numero][4]);
digitalWrite(segmentoF, digitos[numero][5]);
digitalWrite(segmentoG, digitos[numero][6]);
}