Programmiamo in MicroPython il display LCD ad interfaccia I2C

Il display LCD I2C è uno degli attuatori più utilizzati nel mondo del DIY. Programmarlo è uno dei passi fondamentali che vi esponiamo per imparare la programmazione di base in MicroPython. Vi ricordiamo che, per lavorare in MicroPython, occorrerà installare sulla vostra ESP32, o altra dev-board, l’apposito firmware che abbiamo già visto in questo ARTICOLO.

Collegamenti

Iniziamo collegando la nostra Lolin32 Lite al display LCD, adoperando la connessione I2C. Colleghiamo il pin 22 al pin SCL del display, il pin 15 al SDA, il GND al ground della scheda e il Vcc al VN. Notate bene che il display funziona con i 5V, quindi adopereremo una alimentazione esterna se non dovesse essere possibile alimentarlo dalla scheda.

LCD



Codice

Prima di programmare il display sarà necessario individuarne l’indirizzo. Per chi ha già esperienza con questo attuatore, sa bene che esistono diversi indirizzi disponibili, ed identificarlo subito richiede un piccolo programma. Nel nostro caso potete scaricarlo da questo LINK.


import machine

sdaPIN=machine.Pin(15)
sclPIN=machine.Pin(22)

i2c=machine.I2C(sda=sdaPIN, scl=sclPIN, freq=10000)

devices = i2c.scan()
if len(devices) == 0:
print("Dispositivo non trovato!")
else:
print('Dispositivo trovato:',len(devices))
for device in devices:
print("Indirizzo: ",hex(device))

Apritelo e caricatelo sulla scheda tramite Thonny e dalla shell apparirà l’indirizzo.

lcd



Ora che abbiamo individuato l’indirizzo del display, dobbiamo caricare sulla scheda due librerie, necessarie per gestire il display LCD I2C; sono le librerie i2c_lcd.py e lcd_api.py da caricare tramite Thonny sulla memoria della Lolin32 Lite, prima di scrivere il codice per far funzionare il display LCD.

LCD

Partiamo con la scrittura del codice, scaricabile a questo LINK, inserendo il modulo machine e dichiarando le classi Pin e SoftI2C; quest’ultima classe è per la gestione dell’interfaccia I2C. Includiamo anche il modulo time per la gestione dei timer stoppanti (sleep). Inseriamo i moduli precedentemente caricati sulla scheda e importiamo le corrispettive classi per gestire il display.


import machine
from machine import Pin, SoftI2C
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
from time import sleep

Dichiariamo l’indirizzo del display, il numero di righe e colonne. Nel nostro esempio usiamo il modello 16×02, ossia 2 righe e 16 colonne.


I2C_ADDR = 0x27
totalRows = 2
totalColumns = 16

Creiamo l’oggetto i2c per la gestione dell’omonima interfaccia, indicando il pin SDA, SCL e la frequenza di comunicazione.


i2c = SoftI2C(scl=Pin(22), sda=Pin(15), freq=10000)

Creiamo un altro oggetto, chiamato lcd, indicando tutte le informazioni finora dichiarate (pin per l’interfaccia, indirizzo, numero di colonne e righe).


lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns)



Apriamo, infine, il ciclo while True, dove con la funzione lcd.putstr() scriviamo sul display, inserendo un testo all’interno dei doppi apici, mentre con lcd.clear() cancelliamo il display.


while True:
lcd.putstr("Iscriviti")
sleep(2)
lcd.clear()
lcd.putstr("Al canale!")
sleep(2)
lcd.clear()

Carichiamo lo sketch sulla Lolin32 Lite e vedremo apparire sul display le scritte che abbiamo preparato.