Tutorial Arduino - Conectar LCD 16x2 por protocolo I2C
I²C (también lo verás escrito como I2C) es un bus de comunicaciones en serie que utiliza dos líneas para transmitir la información: una para los datos y por otra la señal de reloj. Como suelen comunicarse circuitos en una misma placa que comparten una misma masa, esta tercera línea no suele ser necesaria. En la mayoría de las placas Arduino, SDA (línea de datos) está en el pin analógico 4, y SCL (línea de reloj) está en el pin analógico 5. En Arduino Mega, SDA está en el pin digital 20 y SCL en el 21. Con el protocolo I2C podemos ampliar nuestro numero de entradas digitales e incluso comunicar varios arduinos entre sí. Usando nuestro LCD por I2C también ahorraremos muchos pines.
Arduino tiene de serie una librería para la comunicación sobre este protocolo. Esta es la librería Wire.h .
Para este tutorial, utilizaremos un LCD 16x2, aunque se podría hacer casi igual con un 16x4, y una placa para la conexión de este por I2C. Aunque esta placa la podríamos hacer nosotros, actualmente las venden hechas y a un precio muy competente, así que nos facilita mucho las cosas adquirir una en vez de hacerla.
Yo compré exactamente esta, LCDtoI2C. Muy cómoda porque viene también con el potenciómetro para regular el contraste. Es el modelo diseñado por MJKDZ, el cual tiene sus características propias, muy a tener en cuenta si conseguís otra placa que sea diferente.
Será necesario también añadir una nueva librería para la comunicación del LCD por el protocolo. Para descargar la librería, sigue el siguiente enlace: librería i2cLCD.
El esquema de conexión es muy fácil. Simplemente conectando los pines de la placa a los pines correspondientes del LCD, el SDA al pin A4 del arduino UNO (pin 20 Mega), el SCL al pin A5 arduino UNO (21 Mega), la masa y el power.
[caption id="attachment_5627" align="aligncenter" width="722"]
Conexionado. Perdón por la calidad de la foto.[/caption]
Lo siguiente a hacer es hacer una pequeña prueba de "hola mundo" con algún detallito más y ver que realmente funciona, ahí va el código:
/*Prueba de LCD por protocolo I2C Mostraremos un mensaje y lo borraremos continuamente haciendo parpadear el backlight*/ // Importamos las librerias necesarias #include <Wire.h> #include <LCD.h> #include <LiquidCrystal_I2C.h> // F Malpartida's NewLiquidCrystal library /*-----( Declare Constants )-----*/ #define I2C_ADDR 0x20 // Direccion I2C para PCF8574A que es el que lleva nuestra placa diseñada por MJKDZ //definimos las constantes para esta placa #define LED_OFF 0 #define LED_ON 1 //mjkdz i2c LCD board // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(I2C_ADDR, 4, 5, 6, 0, 1, 2, 3, 7, NEGATIVE); void setup() { lcd.begin (16,2); // inicializar lcd // Activamos la retroiluminacion lcd.setBacklight(LED_ON); } void loop() { // Reset the display lcd.clear(); lcd.setBacklight(LED_OFF);//Backlight OFF delay(500); lcd.backlight(); //Backlight ON lcd.setCursor(0,0); lcd.print("Hola Geekytheory"); lcd.setCursor(0,1); lcd.print("LCD por I2C"); delay(2000); } Espero que os haya gustado y no tengáis ningún problema. ¡Saludos!