oled-i2c.py

Raspberry Pi Pico 2 · Fichier : oled-i2c.py · Langage : Python · Usage : Afficher texte et compteur sur un écran OLED I2C 0,96"

Un écran OLED 0,96" SSD1306 (128x64) relié en I2C affiche texte et compteur. Le script balaie d'abord le bus pour vérifier la présence du module, puis utilise le pilote ssd1306.py livré avec MicroPython.

Matériel requis

Une Raspberry Pi Pico 2 (RP2350 double Cortex-M33 @ 150 MHz) avec MicroPython installé, alimentée par USB. 1 écran OLED SSD1306 I2C (4 broches : VCC, GND, SCL, SDA), adresse 0x3C en général.

Câblage

SDA sur GP4, SCL sur GP5, VCC sur 3V3, GND commun. Les résistances de pull-up sont en général déjà sur le module.

Fonctionnement

I2C(0, ...) configure le contrôleur matériel ; i2c.scan() liste les adresses répondantes. Le pilote construit la trame 128x64 en RAM puis oled.show() la transfère d'un bloc.

Exécution

Installer le MicroPython « Pico 2 » (maintenir BOOTSEL, brancher l'USB, déposer le .uf2), puis copier le script via Thonny. Démarrage automatique avec le nom main.py.

Variantes

Passer à SPI pour des rafraîchissements plus rapides, ou afficher la température interne en combinant avec le script ADC correspondant.

oled-i2c.py

# OLED SSD1306 128x64 en I2C avec le pilote ssd1306.py de MicroPython.
from machine import I2C, Pin
import ssd1306
import time

# I2C0 : SDA = GP4, SCL = GP5 (broches arbitraires mais classiques).
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)

# Verifier la presence du module (adresse usuelle 0x3C) :
trouves = i2c.scan()
print("Peripheriques I2C :", [hex(a) for a in trouves])

oled = ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(0)
oled.text("Bonjour !", 0, 0, 1)
oled.text("I2C 0x3C", 0, 10, 1)
oled.show()
time.sleep(2)

n = 0
while True:
    oled.fill(0)
    oled.text("Compteur", 0, 0, 1)
    oled.text(str(n), 0, 20, 1)
    oled.text("RP2 MicroPython", 0, 44, 1)
    oled.show()          # transfere l'ecran entier
    n += 1
    time.sleep(1)

← Retour à la fiche