// Pines conectados a los segmentos A-G del display de 7 segmentos
const int pinesSeg[] = {D2, D3, D4, D5, D6, D7, D8};
// Patrones de encendido para los dígitos del 0 al 9 (display de ánodo común)
const byte patronesNum[10] = {
0b1000000, // 0
0b1111001, // 1
0b0100100, // 2
0b0110000, // 3
0b0011001, // 4
0b0010010, // 5
0b0000010, // 6
0b1111000, // 7
0b0000000, // 8
0b0010000 // 9
};
// Secuencia personalizada de números a mostrar
int secuenciaNums[] = {8, 1, 1, 4, 1, 4, 5, 1, 8};
// Cantidad total de números en la secuencia
int cantidadNums = 9;
// Índice actual dentro de la secuencia
int indiceSec = 0;
void setup() {
Serial.begin(115200);
// Configura cada pin del display como salida y lo deja apagado (HIGH en ánodo común)
for (int i = 0; i < 7; i++) {
pinMode(pinesSeg[i], OUTPUT);
digitalWrite(pinesSeg[i], HIGH);
}
Serial.println("DISPLAY 7 SEGMENTOS - LIMPIO Y COMENTADO");
Serial.println("Secuencia: 8, 1, 1, 4, 1, 4, 5, 1, 8");
}
// Función que muestra un número del 0 al 9 en el display
void mostrarNumero(int valor) {
// Si el valor está fuera del rango, se apaga todo
if (valor < 0 || valor > 9) {
for (int i = 0; i < 7; i++) {
digitalWrite(pinesSeg[i], HIGH);
}
return;
}
// Se obtiene el patrón binario correspondiente al número
byte patron = patronesNum[valor];
// Se escribe el patrón en los pines del display
// (En ánodo común: HIGH = apagado, LOW = encendido)
for (int i = 0; i < 7; i++) {
if ((patron >> i) & 1) {
digitalWrite(pinesSeg[i], HIGH); // Apagar segmento
} else {
digitalWrite(pinesSeg[i], LOW); // Encender segmento
}
}
}
void loop() {
// Obtiene el número actual de la secuencia
int numActual = secuenciaNums[indiceSec];
// Lo muestra en el display
mostrarNumero(numActual);
// Imprime el estado actual por el monitor serial
Serial.print("Número [");
Serial.print(indiceSec + 1);
Serial.print("/");
Serial.print(cantidadNums);
Serial.print("]: ");
Serial.println(numActual);
// Avanza al siguiente número de la secuencia
indiceSec++;
// Si llega al final, reinicia
if (indiceSec >= cantidadNums) {
indiceSec = 0;
Serial.println("Reiniciando secuencia");
}
// Espera 1 segundo antes de mostrar el siguiente
delay(1000);
}