oled-i2c.py
Una pantalla OLED SSD1306 de 0,96" (128x64) conectada por I2C muestra texto y un contador. El script primero escanea el bus para confirmar la presencia del módulo y luego usa el driver ssd1306.py incluido con MicroPython.
Hardware
Una placa genérica con microcontrolador RP2040 (doble Cortex-M0+) programada en MicroPython. 1 módulo OLED SSD1306 I2C (4 pines: VCC, GND, SCL, SDA), dirección habitual 0x3C.
Cableado
SDA a GP4, SCL a GP5, VCC a 3V3, GND común. Las resistencias de pull-up suelen venir ya en el módulo.
Funcionamiento
I2C(0, ...) configura el controlador hardware; i2c.scan() lista las direcciones que responden. El driver construye la trama 128x64 en RAM y oled.show() la transfiere de golpe.
Ejecución
Graba MicroPython vía BOOTSEL (archivo .uf2) y copia el script en la unidad de la placa. Comprueba el pin del LED de usuario de tu placa (a menudo GP25) y adáptalo si hace falta.
Variantes
Pasa a SPI para refrescos más rápidos, o muestra la temperatura interna combinando con el script ADC correspondiente.
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)