LCD Shield¶
El LCD Shield es una pantalla TFT SPI de 1,8 pulgadas y 128x160 para mostrar fotogramas en directo o información de depuración directamente desde la OpenMV Cam. Ideal para robótica de campo e implementaciones autónomas.
Para consultar la hoja de datos completa, fotos e información de compra, visite la página del producto LCD Shield.
Características destacadas¶
Pantalla TFT LCD de 1,8 pulgadas, 128x160, RGB565
Retroiluminación controlable
Distribución de pines¶
Referencia de pines¶
Pin |
Función |
|---|---|
P0 |
SPI MOSI — salida de datos hacia la LCD |
P2 |
Reloj SPI |
P3 |
Selección de chip SPI |
P6 |
Control de retroiluminación |
P7 |
Reinicio de la LCD |
P8 |
Comando SPI (selección de datos/comando) |
Línea de 3,3 V |
Alimenta la LCD |
Línea GND |
Masa común |
Nota
Corte la pista de soldadura en la parte posterior del shield para desconectar P6 de la retroiluminación; la retroiluminación queda entonces encendida de forma permanente.
Uso¶
Transmita fotogramas de la cámara a la pantalla SPI de 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())
Controle la retroiluminación mediante PWM para un brillo ajustable. Envuelva machine.PWM en una pequeña clase controladora de retroiluminación y pásela a display.SPIDisplay a través de su argumento backlight — SPIDisplay llama a backlight(value) en el objeto cada vez que necesita actualizar el nivel:
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())