LCD Shield

Le LCD Shield est un écran TFT SPI de 1,8 pouce 128x160 pour afficher des trames en direct ou des informations de débogage directement depuis l’OpenMV Cam. Idéal pour la robotique de terrain et les déploiements autonomes.

LCD Shield

Pour la fiche technique complète, les photos et la commande, consultez la page produit du LCD Shield.

Points forts

  • Écran LCD TFT de 1,8 pouce, 128x160, RGB565

  • Rétroéclairage contrôlable

Brochage

Brochage du LCD Shield

Référence des broches

Broche

Fonction

P0

SPI MOSI — données vers l’écran LCD

P2

Horloge SPI

P3

Sélection de puce SPI

P6

Contrôle du rétroéclairage

P7

Réinitialisation de l’écran LCD

P8

Commande SPI (sélection données / commande)

Rail 3,3 V

Alimente l’écran LCD

Rail GND

Masse commune

Note

Coupez la piste à souder au dos du shield pour déconnecter P6 du rétroéclairage ; celui-ci reste alors allumé en permanence.

Utilisation

Diffusez les trames de la caméra vers l’écran SPI 128×160

import csi
import display
import image
import time

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize((128, 160))

lcd = display.SPIDisplay()
clock = time.clock()

while True:
    clock.tick()
    lcd.write(csi0.snapshot(), hint=image.CENTER | image.SCALE_ASPECT_KEEP)
    print(clock.fps())

Pilotez le rétroéclairage via PWM pour une luminosité réglable. Encapsulez machine.PWM dans une petite classe de contrôleur de rétroéclairage et passez-la à display.SPIDisplay via son argument backlightSPIDisplay appelle backlight(value) sur l’objet chaque fois qu’il doit mettre à jour le niveau

import csi
import time
import display
import image
from machine import Pin, PWM


class PWMBacklight:
    """Drives a backlight pin with machine.PWM (0–100 %)."""

    def __init__(self, pin, frequency=200):
        self._pwm = PWM(Pin(pin), freq=frequency, duty_u16=0)

    def backlight(self, value):
        self._pwm.duty_u16(int(value * 65535 / 100))

    def deinit(self):
        self._pwm.deinit()


csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize((128, 160))

lcd = display.SPIDisplay(backlight=PWMBacklight("P6"))
lcd.backlight(50)  # 0–100
clock = time.clock()

while True:
    clock.tick()
    lcd.write(csi0.snapshot(), hint=image.CENTER | image.SCALE_ASPECT_KEEP)
    print(clock.fps())