class SPIDisplay – Pilote d’écran SPI¶
La classe SPIDisplay pilote de petits panneaux TFT et OLED connectés en SPI – le plus souvent l’OLED RGB SSD1351 128x160 du OpenMV LCD Shield. Le pilote gère en interne le bus SPI ainsi qu’une ligne GPIO de sélection de puce / DC, de sorte que l’appelant n’a qu’à configurer la géométrie du panneau, la fréquence de rafraîchissement et les éventuels indicateurs d’orientation. L’initialisation propre au panneau (séquences de registres, cadrage d’écriture en RAM) est fournie via l’argument nommé controller – passez une instance SSD1351 pour piloter le LCD Shield, ou implémentez votre propre classe de contrôleur pour d’autres panneaux.
Les trames sont affichées en appelant write() avec une image.Image. Le pilote convertit la source en RGB565 et applique en interne la mise à l’échelle, le ROI, la palette et les transformations d’orientation, de sorte que l’appelant n’a pas besoin de prédimensionner l’image. La luminosité du rétroéclairage peut être laissée comme un simple GPIO marche/arrêt (par défaut) ou pilotée par DACBacklight / PWMBacklight en passant l’un d’eux via l’argument nommé backlight.
Exemple – recopier la caméra sur l’OLED SSD1351 du OpenMV LCD Shield:
import csi
import display
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize((128, 160)) # matches the SSD1351 panel
lcd = display.SPIDisplay(controller=display.SSD1351())
while True:
lcd.write(csi0.snapshot())
Constructeurs¶
- class display.SPIDisplay(width: int = 128, height: int = 160, refresh: int = 60, bgr: bool = False, byte_swap: bool = False, hmirror: bool = True, vflip: bool = True, triple_buffer: bool | None = None, *, controller: object | None = None, backlight: object | None = None)¶
widthLargeur de l’écran LCD SPI en pixels (1..32767).heightHauteur de l’écran LCD SPI en pixels (1..32767).refreshFréquence de rafraîchissement du LCD en hertz (1..120). Contrôle la fréquence d’horloge SPI.bgrmettre à True pour échanger les canaux rouge et bleu.byte_swapmettre à True pour échanger les octets des pixels RGB565 envoyés au LCD.hmirrormettre à True pour mettre en miroir horizontalement la sortie de l’affichage.vflipmettre à True pour retourner verticalement la sortie de l’affichage.triple_buffersi True, rend les mises à jour de l’écran non bloquantes au prix de 3X la taille de l’affichage en RAM. La valeur par défaut dépend de la carte (activé pour les cartes dotées de SDRAM).controllernommé uniquement. Passez une instance de classe de puce contrôleur pour l’initialiser en même temps que l’affichage. Lorsqu’elle est fournie, les méthodesinit,display_on,display_offetram_writedu contrôleur (si présentes) sont invoquées à la place des commandes intégrées.backlightnommé uniquement. Passez un module de contrôleur de rétroéclairage à utiliser. Par défaut, le rétroéclairage est contrôlé via une broche GPIO.- write(image: image.Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0) None¶
Affiche
imageavec son coin supérieur gauche à(x, y). Une chaîne de chemin peut être passée à la place d’une image pour la charger et la dessiner en une seule étape.x_scalefacteur d’échelle sur l’axe x. Les valeurs négatives retournent horizontalement. Siy_scaleest omis, il suitx_scalepour préserver le rapport d’aspect.y_scalefacteur d’échelle sur l’axe y. Les valeurs négatives retournent verticalement (nécessitetriple_buffer=True). Six_scaleest omis, il suity_scale.roirectangle de région d’intérêt(x, y, w, h)de l’image source à dessiner.rgb_channelcanal RGB à extraire d’une image source RGB565 (0=R, 1=G, 2=B, -1=tous). Plage : -1..2.alphaopacité de l’image. 0 est entièrement transparent (noir), 255 est opaque. Plage : 0..255.color_paletteénumération de palette de couleurs (p. ex.image.PALETTE_RAINBOW) ou image RGB565 de 256 pixels utilisée comme table de correspondance de couleurs sur la valeur en niveaux de gris de la source. Appliquée après l’extraction dergb_channel.alpha_paletteimage en niveaux de gris de 256 pixels utilisée comme table de correspondance alpha par pixel modulantalphaen fonction de la valeur en niveaux de gris de la source.hintOU logique des indicateurs :image.AREA: Utilise la mise à l’échelle par zone lors de la réduction.image.BILINEAR: Utilise la mise à l’échelle bilinéaire.image.BICUBIC: Utilise la mise à l’échelle bicubique.image.CENTER: Centre l’image sur l’affichage (après la mise à l’échelle).image.HMIRROR: Met l’image en miroir horizontalement.image.VFLIP: Retourne l’image verticalement.image.TRANSPOSE: Transpose l’image (échange x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Applique l’extraction dergb_channelavant la mise à l’échelle.image.APPLY_COLOR_PALETTE_FIRST: Appliquecolor_paletteavant la mise à l’échelle.image.SCALE_ASPECT_KEEP: Met à l’échelle pour tenir dans l’affichage.image.SCALE_ASPECT_EXPAND: Met à l’échelle pour remplir l’affichage (avec recadrage).image.SCALE_ASPECT_IGNORE: Met à l’échelle pour remplir l’affichage (avec étirement).image.ROTATE_90: Pivote de 90 degrés (VFLIP | TRANSPOSE).image.ROTATE_180: Pivote de 180 degrés (HMIRROR | VFLIP).image.ROTATE_270: Pivote de 270 degrés (HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Efface l’écran LCD en noir.
display_offsi True, éteint la logique d’affichage au lieu d’effacer le tampon d’image. Le rétroéclairage devrait également être désactivé ensuite.
- backlight(value: int | None = None) int | None¶
Avec
value, définit l’intensité du rétroéclairage (0=éteint..100=maximum). Sans argument, renvoie la valeur actuelle du rétroéclairage.À moins qu’un contrôleur
DACBacklightouPWMBacklightne soit passé à la construction, le rétroéclairage est piloté comme une broche GPIO et ne passe que de 0 (éteint) à une valeur non nulle (allumé).
- bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None¶
Envoie
cmdà l’affichage via le bus SPI, éventuellement suivi deargs(un octet entier ou un tampon d’octets).dcssélectionne le cadrage DCS lorsqu’il est pris en charge par le contrôleur.
- bus_read(cmd: int, len: int, args: int | bytes | None = None, *, dcs: bool = False) bytearray¶
Envoie
cmdvia le bus SPI et litlenoctets en retour, les renvoyant sous forme debytearray.argsest éventuellement écrit avant la lecture (un octet entier ou un tampon d’octets).dcssélectionne le cadrage DCS lorsqu’il est pris en charge par le contrôleur.