Cómo conectar una pantalla LCD 16×02 con controlador I2C a Raspberry Pi

En este pequeño tutorial veremos cómo conectar una pantalla / display LCD 16×02 con controlador I2C a una tarjeta Raspberry Pi, también encontrarás un código de programación para tus primeras pruebas.

Las pantallas LCD son dispositivos digitales de salida, es decir su funcionamiento consiste en recibir instrucciones correspondientes al texto que se desea mostrar y mostrarlo. Al utilizar un controlador I2C reducimos el número de conexiones y de pines de la Raspberry Pi a usar ya que la comunicación entre la anterior y la Pantalla LCD se realiza a través de 2 GPIO. En este ejemplo utilizaremos el paquete de python Adafruit_CircuitPython_CharLCD para controlar la pantalla con pocas líneas de código.

Componentes Necesarios

  • Controlador I2C para LCD 16×02 y 20×04
  • Pantalla LCD 16×02
  • Convertidor de nivel lógico bidireccional – 3.3V <-> 5V TTL
  • Raspberry Pi
  • Protoboard Chica
  • Cables para conexiones M-M y H-M

Diagrama de Conexiones

Arduino Uno – LCD 16×02 – controlador I2C LCD

Pasos previos a cargar el código

1.- Instalar paquetes de Python3

En este código hacemos uso del paquete de Python3 Adafruit_CircuitPython_CharLCD. Para instalarlo ejecuta el siguiente comando en la terminal:

[email protected]:~$ sudo pip3 install adafruit-circuitpython-charlcd

2.- Habilitar comunicación I2C en la Raspberry Pi

Para que podamos ejecutar un programa que intercambie información por I2C en nuestra Raspberry Pi, debemos habilitar el hardware correspondiente en dicha tarjeta. Esto lo podemos hacer de manera sencilla con ayuda de la herramienta de configuración raspi-config, si no has utilizado esta herramienta antes da click aquí para ver el paso a paso. Una vez que termines regresa para ejecutar el código.

Código de Python3

Copiamos el siguiente código de ejemplo de Adafruit a un script de Python y lo ejecutamos con Python3 y observamos el texto desplegado en la pantalla LDC 16×02.


"""Simple test for I2C RGB character LCD shield kit"""
import time
import board
import busio
import adafruit_character_lcd.character_lcd_rgb_i2c as character_lcd
 
# Modify this if you have a different sized Character LCD
lcd_columns = 16
lcd_rows = 2
 
# Initialise I2C bus.
i2c = busio.I2C(board.SCL, board.SDA)
 
# Initialise the LCD class
lcd = character_lcd.Character_LCD_RGB_I2C(i2c, lcd_columns, lcd_rows)
 
lcd.clear()
# Set LCD color to red
lcd.color = [100, 0, 0]
time.sleep(1)
# Print two line message
lcd.message = "Hello\nCircuitPython"
# Wait 5s
time.sleep(5)
# Set LCD color to blue
lcd.color = [0, 100, 0]
time.sleep(1)
# Set LCD color to green
lcd.color = [0, 0, 100]
time.sleep(1)
# Set LCD color to purple
lcd.color = [50, 0, 50]
time.sleep(1)
lcd.clear()
# Print two line message right to left
lcd.text_direction = lcd.RIGHT_TO_LEFT
lcd.message = "Hello\nCircuitPython"
# Wait 5s
time.sleep(5)
# Return text direction to left to right
lcd.text_direction = lcd.LEFT_TO_RIGHT
# Display cursor
lcd.clear()
lcd.cursor = True
lcd.message = "Cursor! "
# Wait 5s
time.sleep(5)
# Display blinking cursor
lcd.clear()
lcd.blink = True
lcd.message = "Blinky Cursor!"
# Wait 5s
time.sleep(5)
lcd.blink = False
lcd.clear()
# Create message to scroll
scroll_msg = "<-- Scroll"
lcd.message = scroll_msg
# Scroll to the left
for i in range(len(scroll_msg)):
    time.sleep(0.5)
    lcd.move_left()
lcd.clear()
time.sleep(1)
lcd.message = "Going to sleep\nCya later!"
time.sleep(5)
# Turn off LCD backlights and clear text
lcd.color = [0, 0, 0]
lcd.clear()

¡Sigue explorando!