Introducción
Una pantalla de cristal líquido (LCD) es una pantalla plana u otro dispositivo óptico de modulación electrónica que utiliza las propiedades de modulación de la luz de los cristales líquidos combinados con polarizadores. Es muy común utilizarlas para obtener y actualizar sistemas electrónicos y mostrar los resultados. En este blog vamos a hablarte de cómo usarlas con las comunicaciones I2C de su controlador PLC.
Requisitos Hardware
Cualquiera de nuestros Controladores lógicos programables industriales
Una LCD de cristal líquido (En este ejemplo usaremos una de 16x2)
El módulo de interfaz I2C y el cable I2C
Cables
¿Cómo se conecta?
Hay muchas pantallas de cristal líquido en el mercado; en este caso, utlizarás un DEM 16215 de 16x2 de tamaño y un módulo de interfaz I2C HW-061. Para el PLC industrial Arduino, te recomendamos un M-Duino 50RRA+ WiFi/BT.
Proporcionarás una alimentación de 24V al PLC Arduino, que suministrará 5V para alimentar a la LCD. La pantalla tiene 16 pines pero solo usarás un total de 12 ya que trabajarás con una interfaz de 4 bits de longitud de datos. Los pines que usarás para los caracteres son los de 11 a 14.
Busca los pines de comunicación I2C en el lado del controlador Arduino ya que conectarás los pines SCL y SDA del PLC con los del módulo I2C. Luego usando el cable I2C conectarás la pantalla LCD. Dependiendo de tus componentes, consulta la documentación para conocer los pines a conectar entre la LCD y el módulo I2C.
Interfaz de software
Nuestros controladores industriales se programan utilizando Arduino Ide, que es un software basado en el lenguaje C. También se pueden programar usando C directamente, pero es mucho más fácil trabajar con Arduino IDE, ya que proporciona muchas bibliotecas que ayudan en la programación.
Industrial Shields proporciona placas para programar los PLCs. Básicamente, no necesitas definir los pines y si son entradas o salidas, ya que todo se configura automáticamente usando las placas.
Para instalar las placas Industrial Shields, este enlace lo explica todo:
Si no sabes la dirección de I2C con la que estás trabajando, revisa este post sobre cómo funciona un escáner I2C. Conocer la dirección es el primer paso para poder trabajar correctamente con este proyecto.
Código
Para funcionar correctamente, las bibliotecas Wire y LiquidCrystal_I2C deben estar incluidas.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
Primero tienes que llamar a la siguiente declaración para crear la clase LiquidCrystal y establecer todas las configuraciones. Usted establecerá la dirección del dispositivo I2C y el número de filas y columnas de su LCD. Si la dirección I2C es desconocida, puede consultar nuestro post sobre cómo conocerla.
LiquidCrystal_I2C lcd(0x3F, 16, 2);
Cuando la pantalla se enciende, tiene una configuración por defecto, sin embargo, al reiniciar el Arduino no se reinicia la LCD, por lo que no puedes asumir que está en ese estado cuando se inicia un sketch (y llamas al constructor LiquidCrystal). Para establecer todas las configuraciones internas, debes llamar a la función de inicio antes de hacer nada.
lcd.begin();
La biblioteca de Cristal Líquido de I2C proporciona una amplia gama de opciones para trabajar con ella. Sin embargo, sólo utilizarás algunas ya que son las funciones más importantes para empezar a trabajar rápidamente. Para un uso más preciso, consulta toda la documentación de la biblioteca GitHub.
Las que usarás son las siguientes:
lcd.print(“ x ”): Esta funcionará como la función de impresión, imprimiendo el texto en la pantalla LCD.
lcd.clear(): Limpiará la pantalla y pondrá el cursor en la posición cero.
lcd.setCursor(uint8_t col, uint8_t row): Pondrá el cursor en la posición que haya seleccionado.
lcd.backlight(): Encenderá la luz de fondo del LCD.
A continuación aparecerá un código para ver cómo mostrar algún texto en la LCD:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x3F, 16, 2);
void setup()
{
// initialize the LCD
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
lcd.print("Industrial");
lcd.setCursor(0,1);
lcd.print("Shields!");
}
void loop(){}
Cómo trabajar con una LCD usando I2C en la automatización industrial