LCD Shield

L’LCD Shield è un TFT SPI da 1.8 pollici 128x160 per mostrare frame in tempo reale o informazioni di debug direttamente dall’OpenMV Cam. Ideale per la robotica sul campo e i deployment autonomi.

LCD Shield

Per il datasheet completo, le foto e gli ordini consulta la pagina prodotto dell’LCD Shield.

Punti salienti

  • LCD TFT da 1.8 pollici, 128x160, RGB565

  • Retroilluminazione controllabile

Pinout

Pinout dell'LCD Shield

Riferimento dei pin

Pin

Funzione

P0

SPI MOSI — dati in uscita verso l’LCD

P2

Clock SPI

P3

Chip select SPI

P6

Controllo della retroilluminazione

P7

Reset dell’LCD

P8

Comando SPI (selezione dati / comando)

Linea 3.3V

Alimenta l’LCD

Linea GND

Massa comune

Nota

Taglia la traccia a saldare sul retro dello shield per scollegare P6 dalla retroilluminazione; la retroilluminazione rimane quindi permanentemente accesa.

Utilizzo

Trasmetti in streaming i frame della camera sul display 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())

Comanda la retroilluminazione tramite PWM per una luminosità regolabile. Incapsula machine.PWM in una piccola classe controller della retroilluminazione e passala a display.SPIDisplay tramite il suo argomento backlightSPIDisplay chiama backlight(value) sull’oggetto ogni volta che deve aggiornare il livello:

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())