#define EN 4
#define RS 2
char puertos[] = {23,22,1,3,4,2};
char tiempos[] = {15,5,1,1,1,1,1,1,1,1,1,1};
char config[] = {0x03, 0x03, 0x03, 0x3c, 0x08, 0x02, 0x00, 0x0E, 0xc1, 0x00, 0x3c, 0x01, 0x06};
char msj1[] = {"4-BITS &"};
char msj2[] = {"Ximena Berlanga &"};
void setup()
{
// Configuramos los pines de datos como salidas
for (char i = 0; i <= 5; i++) {
pinMode(puertos[i], OUTPUT);
}
// Inicializamos el pin EN en estado bajo
digitalWrite(EN, LOW);
}
void display(unsigned char N)
{
char i, j, m;
m = 3;
for(i = 0; i <= 3; i++)
{
j = pow(2, m);
digitalWrite(puertos[i], (N & j));
m--;
}
}
void loop()
{
char n;
digitalWrite(RS, LOW);
for (n = 0; n <12; n++)
{
delay(tiempos[n]);
digitalWrite(EN, HIGH);
display(config[n]);
digitalWrite(EN, LOW);
delay(10);
}
digitalWrite(RS, HIGH);
for (char i = 0; msj1[i] != '&'; i++)
{
char dato = (msj1[i] & 0xF0) >> 4;
digitalWrite(EN, HIGH);
display(dato);
digitalWrite(EN, LOW);
dato = msj1[i] & 0x0F;
digitalWrite(EN, HIGH);
display(dato);
digitalWrite(EN, LOW);
delay(1);
}
digitalWrite(RS, LOW);
digitalWrite(EN, HIGH);
display(0x80);
digitalWrite(EN, LOW);
delay(10);
digitalWrite(EN, HIGH);
display(0);
digitalWrite(EN,LOW);
delay(10);
digitalWrite(RS, HIGH);
for (int i = 0; msj2[i] != '&'; i++)
{
char dato = (msj2[i] & 0xF0) >> 4;
digitalWrite(EN, HIGH);
display(dato);
digitalWrite(EN, LOW);
dato = msj2[i] & 0x0F;
digitalWrite(EN, HIGH);
display(dato);
digitalWrite(EN, LOW);
delay(1);
}
// Esperamos un tiempo antes de repetir
while(1);
}