oled-i2c.py
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 W (RP2350 + radio Wi-Fi 2,4 GHz) 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 W » (BOOTSEL + .uf2), copier le script via Thonny. Comme sur la Pico W, la LED utilisateur n'est pas sur un GPIO : utiliser une LED externe pour les sorties.
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)