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.
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¶
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 backlight — SPIDisplay 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())