ssd1306 — Pilote OLED

Ce module fournit un pilote pour les écrans OLED basés sur le SSD1306. Deux variantes de transport sont prises en charge : I2C (SSD1306_I2C) et SPI (SSD1306_SPI). Toutes deux héritent de l’API de dessin de SSD1306, qui encapsule un framebuf.FrameBuffer1.

Exemple

from machine import I2C
import ssd1306

i2c = I2C(2)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(0)
oled.text("Hello", 0, 0)
oled.show()

Classes

class ssd1306.SSD1306(width: int, height: int, external_vcc: bool)

Classe de base pour les écrans OLED SSD1306. Les sous-classes doivent initialiser self.framebuf et fournir les méthodes write_cmd, write_data, write_framebuf et poweron.

Arguments :

  • width – Largeur de l’écran en pixels.

  • height – Hauteur de l’écran en pixels (doit être un multiple de 8).

  • external_vccTrue si une source VCC externe est utilisée, False pour activer la pompe de charge interne.

Attributs d’instance :

  • width – Largeur de l’écran en pixels.

  • height – Hauteur de l’écran en pixels.

  • external_vcc – Indicateur de VCC externe.

  • pages – Nombre de pages de 8 pixels de hauteur (height // 8).

init_display() None

Envoie la séquence de commandes d’initialisation à l’écran, efface le tampon d’image et rafraîchit. Appelée automatiquement par __init__.

poweroff() None

Éteint l’écran (mode veille).

contrast(contrast: int) None

Règle le contraste de l’écran.

  • contrast – Valeur de contraste comprise entre 0 et 255.

invert(invert: int) None

Inverse les couleurs de l’écran.

  • invert0 pour une sortie normale, 1 pour une sortie inversée. Seul le bit de poids faible est utilisé.

show() None

Vide le tampon d’image interne vers l’écran.

fill(col: int) None

Remplit l’intégralité du tampon d’image avec une seule couleur.

  • col – Valeur de couleur (0 pour éteint, 1 pour allumé).

pixel(x: int, y: int, col: int) None

Règle la couleur d’un seul pixel.

  • x – Coordonnée de colonne.

  • y – Coordonnée de ligne.

  • col – Valeur de couleur (0 ou 1).

scroll(dx: int, dy: int) None

Décale le contenu du tampon d’image selon les décalages indiqués. Les pixels décalés hors limites sont perdus ; les pixels libérés sont laissés inchangés.

  • dx – Décalage horizontal en pixels.

  • dy – Décalage vertical en pixels.

text(string: str, x: int, y: int, col: int = 1) None

Dessine une chaîne de caractères à l’aide de la police 8x8 intégrée.

  • string – Texte à dessiner.

  • x – Coordonnée de colonne de départ.

  • y – Coordonnée de ligne de départ.

  • col – Couleur de premier plan (par défaut 1).

class ssd1306.SSD1306_I2C(width: int, height: int, i2c: machine.I2C, addr: int = 0x3C, external_vcc: bool = False)

Pilote SSD1306 connecté en I2C. Hérite de SSD1306.

Arguments :

  • width – Largeur de l’écran en pixels.

  • height – Hauteur de l’écran en pixels.

  • i2c – Un objet machine.I2C (ou compatible) initialisé.

  • addr – Adresse I2C 7 bits du périphérique (par défaut 0x3C).

  • external_vccTrue pour un VCC externe, False pour utiliser la pompe de charge interne.

write_cmd(cmd: int) None

Envoie un seul octet de commande à l’écran via I2C.

write_data(buf: bytes) None

Envoie un tampon de données de pixels à l’écran via I2C.

class ssd1306.SSD1306_SPI(width: int, height: int, spi: machine.SPI, dc: machine.Pin, res: machine.Pin, cs: machine.Pin, external_vcc: bool = False)

Pilote SSD1306 connecté en SPI. Hérite de SSD1306. Utilise une fréquence d’horloge SPI fixe de 10 MHz.

Arguments :

  • width – Largeur de l’écran en pixels.

  • height – Hauteur de l’écran en pixels.

  • spi – Un objet pyb.SPI (ou compatible).

  • dc – Broche de sélection données/commande.

  • res – Broche de réinitialisation.

  • cs – Broche de sélection de puce.

  • external_vccTrue pour un VCC externe, False pour utiliser la pompe de charge interne.

write_cmd(cmd: int) None

Envoie un seul octet de commande à l’écran via SPI.

write_framebuf() None

Transmet l’intégralité du tampon d’image à l’écran via SPI.

poweron() None

Bascule la ligne de réinitialisation pour mettre l’écran sous tension.

Constantes

ssd1306.SET_CONTRAST: int

Commande 0x81 – règle le contraste de l’écran.

ssd1306.SET_ENTIRE_ON: int

Commande 0xA4 – reprend l’affichage à partir du contenu de la RAM.

ssd1306.SET_NORM_INV: int

Commande 0xA6 – sélection de l’affichage normal/inversé.

ssd1306.SET_DISP: int

Commande 0xAE – mise sous/hors tension de l’écran.

ssd1306.SET_MEM_ADDR: int

Commande 0x20 – mode d’adressage mémoire.

ssd1306.SET_COL_ADDR: int

Commande 0x21 – plage d’adresses de colonne.

ssd1306.SET_PAGE_ADDR: int

Commande 0x22 – plage d’adresses de page.

ssd1306.SET_DISP_START_LINE: int

Commande 0x40 – ligne de départ de l’affichage.

ssd1306.SET_SEG_REMAP: int

Commande 0xA0 – remappage des segments.

ssd1306.SET_MUX_RATIO: int

Commande 0xA8 – rapport de multiplexage.

ssd1306.SET_COM_OUT_DIR: int

Commande 0xC0 – sens de balayage de la sortie COM.

ssd1306.SET_DISP_OFFSET: int

Commande 0xD3 – décalage de l’affichage.

ssd1306.SET_COM_PIN_CFG: int

Commande 0xDA – configuration matérielle des broches COM.

ssd1306.SET_DISP_CLK_DIV: int

Commande 0xD5 – rapport de division d’horloge de l’affichage / fréquence de l’oscillateur.

ssd1306.SET_PRECHARGE: int

Commande 0xD9 – période de précharge.

ssd1306.SET_VCOM_DESEL: int

Commande 0xDB – niveau de désélection VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Commande 0x8D – configuration de la pompe de charge.