2 minute(s) de lecture

PicoLedsV2 Voici un petit tuto pour utiliser un LCD1602 en I2C avec un Raspberry PICO. C’est d’une simplicité enfantine tant du point de vue hardware que software.

Circuit électronique

PicoLedsV2 Assurez-vous bien d’avoir un LCD avec un backpack I2C déjà soudé sous le LCD: vous n’aurez que 4 fils à brancher (GND, VCC, SDA et SCL) sur le Raspberry PICO au lieu de 16: c’est très simple à brancher et à utiliser. Il faut relier le GND à la masse, VCC au +5V (Vbus), et dans mon cas j’ai relié SDA à la pin0, SCL à la pin 1 du Raspberry PICO. Il y a une petite vis de réglage en bleue à côté des 4 fils de branchement qui sert à régler la luminosité du LCD.

PicoLedsV2

Software

Si vous découvrez le Raspberry PICO pour la première fois, cet article est fait pour vous.

Pour piloter l’écran LCD, il faut d’abord récupérer deux bibliothèques micro-python ci- dessous: la première pour exploiter l’écran LCD, et l’autre pour que le Raspberry PICO discute directement avec le backpack I2C. J’ai trouvé ces bibliothèques sur ce Github très complet. Les deux bibliothèques qu’il faut récupérer dans notre cas sont:

Créez deux fichiers avec exactement les deux noms lcd_api.py et machine_i2c_lcd.py sur votre Raspberry PICO, collez-copiez y le code et enregistrez.

Pour tester voici un petit code qui exploite le capteur de température interne du Raspberry PICO pour l’afficher sur le LCD, avec utilisation de pictogrammes personnalisés:

Créez un nouveau fichier testLCD.py et copiez/collez y ce code:

from machine import I2C, Pin
from machine_i2c_lcd import I2cLcd
import utime, sys

i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
l=i2c.scan() #liste les adresses I2C trouvées

try:
    i2c_adr = hex(l[0])
    print('adresse hexa I2C trouvée: ', i2c_adr)
except:
    print('aucun LCD I2C trouvé, vérifiez vos branchements')
    sys.exit()
    
lcd = I2cLcd(i2c, int(i2c_adr), 2, 16)
sensor_temp = machine.ADC(4)

# generator custom character: http://omerk.github.io/lcdchargen/
charmap = [
    #thermomètre
    [0b00100,0b01010,0b01010,0b01010,0b11011,0b10111,0b11111,0b01110], 
    #symbole °
    [0b00110,0b01001,0b01001,0b00110,0b00000,0b00000,0b00000,0b00000],
    #logo papsdroid
    [0b01110,0b11111,0b10101,0b11111,0b11111,0b10001,0b11111,0b01110]
]

for i in range(len(charmap)):
    lcd.custom_char(i,charmap[i])


#affichage permanent titre et logos
titre='PapsDroid.fr'
lcd.clear()
lcd.move_to(0,0)
lcd.putchar(chr(2)) # logo papsdroid
lcd.move_to((16-len(titre))//2,0) #affichage centré
lcd.putstr(titre)
lcd.move_to(15,0)
lcd.putchar(chr(2)) # logo papsdroid
lcd.putstr('\n')
lcd.putchar(chr(0)) #affichage logo thermomètre


while True:
    reading = sensor_temp.read_u16() * 3.3/65535
    temperature = 27 - (reading - 0.706)/0.001721
    temp_str = "%.2f" % temperature
    
    #print("température:", temp_str)
    lcd.move_to(2,1)
    lcd.putstr(temp_str) # température
    lcd.putchar(chr(1))  # symbole °
    lcd.putchar('C')
    utime.sleep(5)

Si rien ne s’affiche sur le LCD, c’est sûrement qu’il faut régler la luminosité avec la petite vis bleue