"Ciencia y Tecnología" por Manolo: Pantalla LCD 1602 I2C

Marquesina

"AQUÍ NO NOS DETENEMOS A MIRAR EL PASADO POR MUCHO TIEMPO SIGUE SIEMPRE ADELANTE, ABRIENDO NUEVAS PUERTAS Y HACIENDO COSAS NUEVAS. SÉ CURIOSO" Walt Disney.

domingo, 6 de diciembre de 2020

Pantalla LCD 1602 I2C

 Esta pantalla LCD tiene 16 caractéres en cada una de las 2 filas. Se puede encontrar con contralador LCD I2C que es la que vamos a utilizar por comodidad a la hora de conectar reduciendo a sólo cuatro conexiones.


Conectamos el GND al GND de la placa y el VCC a 5 V de la placa y el SDA (datos) y el SCL (reloj) a los equivalentes en la placa. 

Por ejemplo si la placa es una Mega corresponde a los pines 20 y 21 y para la UNO serán los A4 y A5 respectivamente.


Imagen vía https://www.prometec.net

Antes de hacer el programa reviso la dirección de bus I2C que usa la pantalla. He de recordar que usa 7 bits, eso significa que podemos usar hasta 128 dispositivos diferentes que usan I2C. Se supone que la dirección I2C de la pantalla LCD es la 0x27, en hexadecimal. Pero para asegurarnos usamos el Scanner I2C  que nos indicará esa dirección. Este es el enlace al scanner I2C 

Una vez comprobada la dirección, uso las librerías Wire.h (estándar de I2C) y una nueva librería para manejar el display con I2C, Se llama LiquidCrystal_I2C.

Aquí os dejo un ejemplo de programa. Se muestra por la pantalla el mensaje en dos filas.



#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR    0x27                 //Comprobado con scaner I2C

LiquidCrystal_I2C lcd(I2C_ADDR,2, 1, 0, 4, 5, 6, 7);
void setup()
   {
       lcd.begin (16,2);      // Inicializa el display con 16 caracteres 2 lineas
       lcd.setBacklightPin(3,POSITIVE); // El pin 3 es la luz
       lcd.setBacklight(HIGH);          // Se ilumina

       
   }
void loop() 
   {
       lcd.clear();                  // borramos la pantalla
       lcd.setCursor ( 2, 0 );       // situamos cursor en el 2ºcaracter y 1ªfila 
       lcd.print("TecnoCiencia");
       lcd.setCursor ( 2, 1 );       // situamos cursor en el 2ºcaracter y 2ªfila
       lcd.print("Macnolo.Blog");
       delay (3000);                  //Esperamos 3 s
       lcd.clear();
       lcd.setCursor ( 1, 0 );
       lcd.print("Prueba LCD1602");
       lcd.setCursor ( 4, 1 );        
       lcd.print("ManoloJCR");
       delay (3000);
    }