/*
Programación del display de siete segmentos:
mostrar números correspondientes a las letras de tu nombre*/
int a = 22;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
int f = 15;
int g = 16;
int Segmento = 0;
int Retardo = 50;
void setup() {
Serial.begin(115200);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(Segmento, OUTPUT);
}
int letra_a_numero(char letra) {
// Define el alfabeto castellano
const char alfabeto[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < 27; i++) {
if (alfabeto[i] == letra) {
return i + 1;
}
}
return -1; // En caso de que la letra no esté en el alfabeto
}
void descomponer_numero(int numero, int *digitos, int *size) {
if (numero > 9) {
digitos[0] = numero / 10;
digitos[1] = numero % 10;
*size = 2;
} else {
digitos[0] = numero;
*size = 1;
}
}
void loop() {
char nombre[] = "EDUARDO"; // Cambia este nombre según sea necesario
int longitud = strlen(nombre);
int numeros[100]; // Arreglo para almacenar los números resultantes
int contador = 0;
for (int i = 0; i < longitud; i++) {
char letra_actual = nombre[i];
if (letra_actual >= 'a' && letra_actual <= 'z') {
letra_actual -= 32; // Convertir minúsculas a mayúsculas
}
int numero = letra_a_numero(letra_actual);
if (numero != -1) {
int digitos[2];
int size = 0;
descomponer_numero(numero, digitos, &size);
for (int j = 0; j < size; j++) {
numeros[contador++] = digitos[j];
}
}
}
// Mostrar los números en el monitor serie de manera consecutiva cada segundo
for (int i = 0; i < contador; i++) {
delay(1000);
switch (numeros[i]){
case 0:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW );
digitalWrite(e, LOW );
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
break;
case 1:
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 2:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
break;
case 3:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
break;
case 4:
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 5:
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 6:
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 7:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
break;
case 8:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 9:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
default:
Segmento = -1; //Delimitador -1
break;
}
}
while (1);
}