byte pines[] = {12, 14, 27, 26, 25, 33};
// {RS, EN, D4, D5, D6, D7}
void setup() {
for (byte i = 0; i < 6; i++) {
pinMode(pines[i], OUTPUT);
}
// Las configuraciones se obtuvieron del DataSheet
// DataSheet https://www.sparkfun.com/datasheets/LCD/ADM1602K-NSW-FBS-3.3v.pdf
// https://circuitdigest.com/article/16x2-lcd-display-module-pinout-datasheet
configuraciondeldeste(0x32); // Configuración de 4 bits (0011 0001)
configuraciondeldeste(0x28); // Configuración de modo 2 líneas y 5x8 puntos (0001 1000)
configuraciondeldeste(0x0C); // Encender el Display y mantener el cursor apagado sin parpadear (0000 1100)
configuraciondeldeste(0x01); // Limpiar la pantalla (0000 0001)
}
void enable() {
digitalWrite(pines[1], HIGH);
delay(1);
digitalWrite(pines[1], LOW);
delay(1);
}
void configuraciondeldeste(byte configuracion) {
digitalWrite(pines[0], LOW); // RS es 0 para configurar y 1 para escribir
digitalWrite(pines[2], (configuracion >> 4) & HIGH); // D4
digitalWrite(pines[3], (configuracion >> 5) & HIGH); // D5
digitalWrite(pines[4], (configuracion >> 6) & HIGH); // D6
digitalWrite(pines[5], (configuracion >> 7) & HIGH); // D7
enable();
digitalWrite(pines[2], configuracion & HIGH); // D4
digitalWrite(pines[3], (configuracion >> 1) & HIGH); // D5
digitalWrite(pines[4], (configuracion >> 2) & HIGH); // D6
digitalWrite(pines[5], (configuracion >> 3) & HIGH); // D7
enable();
}
void mandarlosdestos(byte destos) {
digitalWrite(pines[0], HIGH);
for (byte i = 0; i < 4; i++) {
digitalWrite(pines[2 + i], (destos >> (i + 4)) & HIGH);
}
enable();
for (int i = 0; i < 4; i++) {
digitalWrite(pines[2 + i], (destos >> i) & HIGH);
}
enable();
}
void loop() {
char* sexo;
sexo = "Hola Mundo :)";
for (byte i = 0; i < 14; i++) {
mandarlosdestos(sexo[i]);
}
configuraciondeldeste(0xC0); //Salto a la línea 2
sexo = "Equipo 32";
for (int i = 0; i < 10; i++) {
mandarlosdestos(sexo[i]);
}
delay(5000);
configuraciondeldeste(0x01); //Este pa' borrar
}