LCD Shield¶
De LCD Shield is een 1,8 inch 128x160 SPI TFT voor het tonen van live frames of debuginformatie rechtstreeks vanaf de OpenMV Cam. Ideaal voor veldrobotica en zelfstandige implementaties.
Voor de volledige datasheet, foto’s en bestelinformatie, zie de productpagina van de LCD Shield.
Hoogtepunten¶
1,8 inch TFT LCD, 128x160, RGB565
Regelbare achtergrondverlichting
Pinout¶
Pinreferentie¶
Pin |
Functie |
|---|---|
P0 |
SPI MOSI — data-uitgang naar de LCD |
P2 |
SPI-klok |
P3 |
SPI chip select |
P6 |
Besturing achtergrondverlichting |
P7 |
LCD-reset |
P8 |
SPI command (data / command select) |
3.3V-rail |
Voedt de LCD |
GND-rail |
Gemeenschappelijke aarde |
Notitie
Snijd het soldeerspoor aan de achterkant van de shield door om P6 los te koppelen van de achtergrondverlichting; de achtergrondverlichting staat dan permanent aan.
Gebruik¶
Stream cameraframes naar de 128×160 SPI-display:
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())
Stuur de achtergrondverlichting via PWM aan voor instelbare helderheid. Verpak machine.PWM in een kleine besturingsklasse voor de achtergrondverlichting en geef deze door aan display.SPIDisplay via het argument backlight — SPIDisplay roept backlight(value) aan op het object telkens wanneer het niveau moet worden bijgewerkt:
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())