Protocolo:
1) Activar I2C en RPi4
$ sudo raspi-config
3- Interface Options
P5 I2C Enable/disable automatic loading of I2C Kernel Module
Yes
2) Conectar el LCD +I2C al Gpio del RPi:
I2C Gpio RPi
VCC - 3.3V
GND - GND
SDA - #2 SDA
SCL - #3 SCL
3) Instalar I2C-Tools y SMBUS:
# aptitude install i2c-tools python3-smbus
4) Detectar el I2C
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- 27 -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Vemos que en mi caso el I2C este en la dirección 27, esto lo utilizaremos en el siguiente paso.
5) Descargar Librerías
Descargar las librerías lcd_display.py e i2c_lib.py de la dirección: https://github.com/paulbarber/raspi-gpio
$ wget https://raw.githubusercontent.com/paulbarber/raspi-gpio/master/i2c_lib.py
$ wget https://raw.githubusercontent.com/paulbarber/raspi-gpio/master/lcd_display.py
6) Modificar la librería lcd_display.py:
Modificación 1:
$ nano lcd_display.py
...
# LCD Address
ADDRESS = 0x27 <--- Modificar esto poniendo la direccion I2C
...
Modificación 2:
Para utilizar un display de 20×4 es necesario hacer algunas modificaciones adicionales,
Buscar las líneas (sobre la linea 90):
"""display a string on the given line of the display, 1 or 2, string is truncated to 16 chars and centred"""
centered_string = string.center(16)
if line == 1:
self.write(0x80)
if line == 2:
self.write(0xC0)
y cambiarlas por:
"""display a string on the given line of the display, 1 or 2, string is truncated to 16 chars and centred"""
centered_string = string.center(20)
if line == 1:
self.write(0x80)
if line == 2:
self.write(0xC0)
if line == 3:
self.write(0x94)
if line == 4:
self.write(0xD4)
Con esto se ha adaptado para un display con 20 caracteres horizontales y 4 líneas.
7) Probar el lcd: Script en python3:
#!/usr/bin/python3
from lcd_display import lcd
from time import sleep
lcd = lcd()
t = 0.4
while True:
lcd.display_string("Hello World Display",1)
sleep(t)
lcd.display_string("Hello World Display",2)
sleep(t)
lcd.display_string("Hello World Display",3)
sleep(t)
lcd.display_string("Hello World Display",4)
sleep(t)
lcd.clear()
sleep(t)
Bibliografía:
https://openhardware.pe/contactando-un-display-lcd-de-20x4-a-rasperrt-pi-mediante-i2c-i2c-iii/
Update:
La librería para programar el LCD es muy limitada. Hay otra mas completa en:
https://pypi.org/project/RPLCD/
https://rplcd.readthedocs.io/en/stable/usage.html#writing-to-display
No hay comentarios:
Publicar un comentario