#include "Lcd.h"
const int RS = 12;
const int E = 11;
const int D4 = 10;
const int D5 = 9;
const int D6 = 8;
const int D7 = 7;
const unsigned long PAUSA = 0.1; // 20 ms
char binario[9];
const char* FRASE = "TENGO UN DEFECTO EN LA NARIZ JOROñA QUE ES MUY MOLESTO QUE ME SUCEDE IGUAL EN VIGO QUE EN MADRID NO SE POR QUE CUANDO ME PONGO MUY NERVIOSO "
"ME DA UN PICOR IRRESISTIBLE EN LA NARIZ. SI EN EL COLEGIO HAY UN EXAMEN IMPORTANTE O POR LAS NOTAS ME REGANA MI PAPA ME DA ENSEGUIDA ESE PICOR TAN EXCITANTE "
"QUE POR DESGRACIA SIEMPRE ME HACE ESTORNUDAR AH AH ACHIS COMO ME PICA LA NARIZ COMO ME PICA LA NARIZ YA NO LO PUEDO RESISTIR COMO ME PICA LA NARIZ";
void modecomandament(bool valor) {
if (valor == false){
digitalWrite(RS, 1);
} else {
digitalWrite(RS,0);
}
}
void escriu4bits(int b1, int b2, int b3, int b4) {
digitalWrite(D4, b1);
digitalWrite(D5, b2);
digitalWrite(D6, b3);
digitalWrite(D7, b4);
delay(PAUSA);
digitalWrite(E, HIGH);
digitalWrite(E, LOW);
delay(PAUSA);
}
void lcd_set_cursor_to_home() {
modecomandament(true);
escriu4bits(0, 0, 0, 1);
escriu4bits(0, 0, 0, 0);
modecomandament(false);
}
void lcd_set_cursor_to_second_row() {
modecomandament(true);
escriu4bits(0, 0 , 1, 1);
escriu4bits(0, 0, 0, 0);
modecomandament(false);
}
Lcd pantalla(RS,E,D4,D5,D6,D7,PAUSA);
char* char2binary(char c) {
binario[8] = '\0'; // terminador nulo
for (int i = 7; i >= 0; i--) {
binario[7 - i] = bitRead(c, i) ? '1' : '0'; // Lee cada bit y lo convierte a '1' o '0'*/
}
return binario;
}
void setup() {
Serial.begin(9600);
pinMode(RS, OUTPUT);
pinMode(E, OUTPUT);
pinMode(D4, OUTPUT);
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D7, OUTPUT);
digitalWrite(RS, LOW);
digitalWrite(E, LOW);
digitalWrite(D4, LOW);
digitalWrite(D5, LOW);
digitalWrite(D6, LOW);
digitalWrite(D7, LOW);
pantalla.inicia_pantalla();
}
void loop() {
int comptador = 0;
for (int index(0); index < strlen(FRASE); ++index) {
pantalla.envia_dades_al_display(char2binary(FRASE[index]));
if ((index % 16 == 0) && (index >0)) {
if (comptador % 2 == 0) {
lcd_set_cursor_to_home();
} else {
lcd_set_cursor_to_second_row();
}
comptador++;
delay(1000);
}
}
pantalla.detencio_pantalla();
}