bool tipoDisplay = 0;
bool tipoDisplayOld = 0;
unsigned long tempo = 0;
const byte pin[8] = {
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[16] = {
0b00000011, // Numero 0 Anodo Comun
0b10011111, // Numero 1 Anodo Comun
0b00100101, // Numero 2 Anodo Comun
0b00001101, // Numero 3 Anodo Comun
0b10011001, // Numero 4 Anodo Comun
0b01001001, // Numero 5 Anodo Comun
0b01000001, // Numero 6 Anodo Comun
0b00011111, // Numero 7 Anodo Comun
0b00000001, // Numero 8 Anodo Comun
0b00001001, // Numero 9 Anodo Comun
0b00010001, // Numero A Anodo Comun
0b11000001, // Numero B Anodo Comun
0b01100011, // Numero C Anodo Comun
0b10000101, // Numero D Anodo Comun
0b01100001, // Numero E Anodo Comun
0b01110001 // Numero F Anodo Comun
};
void delayPersonal(int _delay) {
tempo = millis();
while (millis() - tempo < _delay) {
leerTipoDisplay();
}
}
void leerTipoDisplay() {
tipoDisplay = digitalRead(2);
if(tipoDisplay != tipoDisplayOld){
tipoDisplayOld = tipoDisplay;
display(255);
}
}
void display(byte digito) {
for (int x = 0; x < 8; x++) {
digitalWrite(pin[x], tipoDisplay ? 1 : 0);
}
if (digito == 255){
delay(1000);
return;
}
delayPersonal(300);
for (int x = 0; x < 8; x++) {
digitalWrite(pin[x], tipoDisplay ? bitRead(numero[digito], 7 - x) : !bitRead(numero[digito], 7 - x));
}
delayPersonal(700);
}
void enviarTexto(String texto) {
display(255);
texto.toUpperCase();
for (int x = 0; x < texto.length(); x++) {
byte digito = texto[x] - 64;
if (digito < 10) {
display(digito);
// delay(1000);
} else {
byte decena = digito / 10;
byte unidad = digito - (decena * 10);
display(decena);
// delay(1000);
display(unidad);
// delay(1000);
}
}
display(255);
}
void setup() {
Serial.begin(115200);
pinMode(2, INPUT);
leerTipoDisplay();
for (int x = 0; x < 8; x++) {
digitalWrite(pin[x], tipoDisplay ? 1 : 0);
pinMode(pin[x], OUTPUT);
}
// enviarTexto("FRANCISCO");
enviarTexto("abcdefghij");
}
void loop() {
}