En este post de programación y electrónica vamos a trabajar con una LCD, módulo I2C y la tarjeta ESP8266 para hacer un sencillo Hola mundo en la LCD.
Es decir, vamos a usar la NodeMCU ESP8266 para imprimir texto en una LCD usando además un módulo I2C para ahorrar conexiones.
Sobre la dirección
Antes de usar el circuito I2C debes conocer la dirección del mismo, para ello ya hice un post.
Circuito de conexión LCD con ESP8266
Pasemos al circuito. En este caso es muy simple, pues básicamente conectamos el I2C a la LCD y después el I2C a la ESP8266. He utilizado el software para diseñarlo y queda así:
Si te quedan dudas de cómo se conecta el I2C y la LCD aquí una foto:
Instalando librería LiquidCrystal_I2C
Pasemos al software. Primero necesitamos instalar la librería. Si tú usas PlatformIO con VSCode entonces puedes ver un ejemplo de cómo buscar aquí. Básicamente la buscas e instalas:
Si usas Arduino, el proceso es similar. Solo fíjate en el nombre (LiquidCrystal_I2C) y el autor (Frank de Brabander).
Código para LCD en ESP8266
Ahora veamos el código que vamos a usar. Te repito que eres libre de usar cualquier IDE, solo realiza las adecuaciones pertinentes. En este caso creamos una referencia a la LCD con:
LiquidCrystal_I2C lcd(0x3f, 16, 2);
Fíjate en que 0x3f
es la dirección que en tu caso puede variar. Luego la iniciamos:
// Iniciar LCD
lcd.begin(16, 2);
lcd.init();
Y encendemos su luz:
lcd.backlight(); // Agregar brillo
Nota importante: la ESP8266 no es capaz de proveer todo el voltaje que la LCD necesita. El texto sí se va a ver, pero no tan claro como cuando alimentamos al I2C con 5V.
Luego podemos movernos con el cursor e imprimir texto:
// Imprimir
lcd.setCursor(0, 0);
lcd.print("LCD y ESP8266");
lcd.setCursor(0, 1); // Segunda fila
lcd.print("parzibyte.me");
Finalmente el código completo queda así:
/*
https://parzibyte.me/blog
*/
#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
// La LCD
LiquidCrystal_I2C lcd(0x3f, 16, 2);
void setup()
{
// Iniciar LCD
lcd.begin(16, 2);
lcd.init();
lcd.backlight(); // Agregar brillo
// Limpiar
lcd.clear();
// Imprimir
lcd.setCursor(0, 0);
lcd.print("LCD y ESP8266");
lcd.setCursor(0, 1); // Segunda fila
lcd.print("parzibyte.me");
}
void loop()
{
// put your main code here, to run repeatedly:
}
No estoy colocando nada en el loop
porque solo necesito imprimir en la LCD una vez, pero tú puedes invocar a los métodos en cualquier lugar y en cualquier evento… es decir, mostrar texto al hacer una petición HTTP, al presionar un botón, etcétera.
El resultado ya pudiste observarlo anteriormente en el post. Obviamente este solo fue el hola mundo, pero a partir de aquí ya puedes crear bastantes cosas interesantes. En una ocasión yo hice el juego de la serpiente en una LCD con Arduino.
Para terminar te dejo con más posts sobre electrónica.