String miNombre = "victor"; // Cadena con el nombre a evaluar
String abecedario = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // Cadena con el abecedario a utilizar
const byte pin[8] = { // arreglo con los pines de salida para cada segmento
4, //Pin segmento a
16, //Pin segmento b
17, //Pin segmento c
5, //Pin segmento d
18, //Pin segmento e
19, //Pin segmento f
21, //Pin segmento g
22 //Pin segmento punto
};
const byte numero[10] = { // Arreglo con los datos binarios por cada digito en version de catodo comun
0b11111100, // Numero 0
0b01100000, // Numero 1
0b11011010, // Numero 2
0b11110010, // Numero 3
0b01100110, // Numero 4
0b10110110, // Numero 5
0b10111110, // Numero 6
0b11100000, // Numero 7
0b11111110, // Numero 8
0b11110110, // Numero 9
};
void display(byte digito) { // Funcion display
for (int x = 0; x < 8; x++) { // Recorre todos los segmentos
digitalWrite(pin[x], 0); // Apaga cada bit del display
}
if (digito == 255) { // Si es digito es 255 sale de la funcion
return;
}
delay(200); // Mantiene por 200ms el display apagado
for (int x = 0; x < 8; x++) { // Recorre los segmentos
digitalWrite(pin[x], bitRead(numero[digito], 7 - x)); // Envia el dato binario de "numero" al display
}
delay(800); // Mantiene encendido el display por 800ms
}
void enviarTexto(String texto) { // Funcion "enviarTexto"
display(255); // Envia a la funcion display en "255"
texto.toUpperCase(); // Convierte la cadena a mayusculas
texto.trim(); // Elimina basura en la cadena
for (int x = 0; x < texto.length(); x++) { // Recorre la cadena
byte digito = abecedario.indexOf(texto[x]) + 1; // Extrae la posicion de cada letra de la cadena
if (digito < 10) { // Evalua si la posicion en de un digito o dos
display(digito); // Si es un digito envia el digito a la funcion "display"
} else { // Si es de dos digito
byte decena = digito / 10; // Extrae la decena
byte unidad = digito - (decena * 10); // Extrae la unidad
display(decena); // Envia la decena a la funcion "display"
display(unidad); // Envia la unidad a la funcion "display"
}
}
display(255);
}
void setup() {
for (int x = 0; x < 8; x++) { // Recorre el arreglo "pin"
digitalWrite(pin[x], 0); // Apaga cada pin del arreglo
pinMode(pin[x], OUTPUT); // Configura cada pin del arreglo como salida
}
enviarTexto(miNombre); // envia el texto de "miNombre" a la funcion "enviarTexto"
}
void loop() {
}