oled-i2c.py

RP2350 (générique / cartes basées sur le RP2350) · 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 carte générique à microcontrôleur RP2350 (double Cortex-M33) programmée en MicroPython. 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

Flasher le MicroPython « RP2350 » via BOOTSEL (.uf2), puis copier le script sur le lecteur. La broche de la LED utilisateur varie selon le fabricant : vérifier la documentation de la carte.

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