🛠 Afficher sur un OLED I2C SSD1306 et déboguer le bus

RP2040 (carte / puce générique) · intermediaire · Schéma : IMG-rp2040-generic-intermediaire-1-rp2040-i2c-oled-ssd1306.svg — module OLED 0,96 pouces SSD1306 relié en I2C à une carte RP2040 générique : VCC 3V3, GND, SDA sur GP4, SCL sur GP5, écran affichant température et texte

Objectifs

Monter un affichage autonome sur ta carte RP2040 : l'I2C du RP2040 (2 contrôleurs, mappables sur toute GPIO — datasheet) piloté par MicroPython, avec le classique module OLED SSD1306 128×64. Tu apprendras surtout à scanner un bus I2C — la compétence qui sauve quand on ne sait pas si le module est mort, mal câblé, ou à l'adresse 0x3C ou 0x3D.

Matériel

Code complet

# scan_i2c.py — d'abord, trouver le module
from machine import I2C, Pin
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)
print('adresses vues:', i2c.scan)     # attendu: [60] soit 0x3C

# oled_demo.py — afficher température interne + texte
import ssd1306, time
from machine import Temp

oled = ssd1306.I2C(128, 64, device=i2c)  # adresse 0x3C détectée
try:
    temp = Temp                        # capteur interne (MicroPython >= 1.22)
except NameError:
    from machine import ADC
    _a = ADC(4)                          # fallback : canal ADC4 interne
    def read_T:
        mv = _a.read_u16 * 3.3 / 65535
        return 27.0 - (mv - 0.706) / 0.001721
else:
    def read_T:
        return temp.temperature

oled.text('RP2040 generique', 0, 0, 1)
oled.text('I2C 400 kHz OK', 0, 10, 1)
while True:
    oled.text('T: %6.2f C' % read_T, 0, 30, 1)
    oled.show
    time.sleep_ms(500)

Vérification attendue

i2c.scan renvoie [60] (0x3C en décimal — l'autre adresse possible du SSD1306 est 0x3D, pont jumper sur le module). L'écran affiche les lignes de texte et la température du capteur interne du RP2040 qui monte quand tu poses le doigt sur la puce. Coupe le SDA : scan renvoie [] — le bus est vivant, le driver aussi.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels