oled_i2c.py
L'écran OLED SSD1306 128x64 se branche sur le bus I2C (GPIO2/GPIO3, broches 3 et 5) et s'initialise par une séquence de commandes. Le script active le bus, efface le framebuffer puis laisse la main. Sur model-b-rev1, activer I2C via raspi-config ou config.txt avant de lancer.
Matériel requis
Une Raspberry Pi Model B révision 1 (BCM2835, connecteur GPIO 26 broches, ports traversants d'origine, pas de connecteur P1 standard 40 broches). Un module OLED SSD1306 I2C (4 broches), fils dupont.
Câblage
VCC sur 3,3 V, GND sur GND, SDA sur GPIO2 (broche 3), SCL sur GPIO3 (broche 5). Le connecteur P1 de 26 broches groupe ces broches en bout de rangée.
Fonctionnement
smbus écrit l'octet de contrôle 0x00 (commande) ou 0x40 (données) suivi des octets vers l'adresse 0x3C ; la séquence configure charge de pompe, contraste et scan.
Exécution
Copiez le script sur la carte (scp ou clé USB), puis lancez-le avec python3 (ou bash). Ces cartes tournent souvent sous une ancienne Raspbian : gpiozero reste installable par apt. Les broches GPIO suivent le connecteur 26 broches du schéma officiel.
Variantes
Bibliothèque luma.oled pour texte et polices ; deux écrans via un multiplexeur TCA9548A. Révision 1 très modeste (256 Mo) : restez léger côté périphériques et vérifiez la tension d'alimentation.
oled_i2c.py
# oled_i2c.py — affiche texte et courbe sur OLED SSD1306 en I2C.
# Deps: sudo apt install python3-smbus i2c-tools (activer i2c_arm)
import time
import smbus
ADDR = 0x3C
bus = smbus.SMBus(1)
def cmd(c):
bus.write_byte_data(ADDR, 0x00, c)
def data(buf):
bus.write_i2c_block_data(ADDR, 0x40, buf)
for c in [0xAE, 0xD5, 0x80, 0xA8, 0x3F, 0xD3, 0x00, 0x40, 0x8D, 0x14,
0xA1, 0xC8, 0xDA, 0x12, 0x81, 0xFF, 0xD9, 0xF1, 0xDB, 0x40,
0xA4, 0xA6, 0xAF]:
cmd(c)
data([0xF0] * 1024) # efface le framebuffer 128x64
print("OLED initialise, i2cdetect -y 1 pour verifier")