// Pines de los segmentos
int a = 23, b = 22, c = 21, d = 19, e = 18, f = 5, g = 4;
bool esAnodo = true; // Tu display es ánodo común (común a 3.3V)
void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void loop() {
mostrarLetra('A');
delay(800);
mostrarLetra('N');
delay(800);
mostrarLetra('D');
delay(800);
mostrarLetra('E');
delay(800);
mostrarLetra('R');
delay(800);
mostrarLetra('S');
delay(800);
mostrarLetra('O');
delay(800);
mostrarLetra('N');
delay(800);
}
// Función para mostrar letras personalizadas
void mostrarLetra(char letra) {
apagarTodo();
switch (letra) {
case 'A': // A normal
encenderSegmentos(true, true, true, false, true, true, true);
break;
case 'N': // N = e, g, c
encenderSegmentos(false, false, true, false, true, false, true);
break;
case 'D': // D = b, c, d, e, g
encenderSegmentos(false, true, true, true, true, false, true);
break;
case 'E': // E normal
encenderSegmentos(true, false, false, true, true, true, true);
break;
case 'R': // R = f, a, b, g, c, e
encenderSegmentos(true, true, true, false, true, true, true);
break;
case 'S': // S = a, f, g, c, d
encenderSegmentos(true, false, true, true, false, true, true);
break;
case 'O': // O = a, b, c, d, e, f
encenderSegmentos(true, true, true, true, true, true, false);
break;
}
}
// Encender/apagar segmentos según tipo de display
void encenderSegmentos(bool segA, bool segB, bool segC, bool segD, bool segE, bool segF, bool segG) {
digitalWrite(a, esAnodo ? !segA : segA);
digitalWrite(b, esAnodo ? !segB : segB);
digitalWrite(c, esAnodo ? !segC : segC);
digitalWrite(d, esAnodo ? !segD : segD);
digitalWrite(e, esAnodo ? !segE : segE);
digitalWrite(f, esAnodo ? !segF : segF);
digitalWrite(g, esAnodo ? !segG : segG);
}
// Apagar todos los segmentos antes de cambiar letra
void apagarTodo() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}