LCD Shield¶
LCD Shield to 1,8-calowy wyświetlacz TFT SPI o rozdzielczości 128x160 do pokazywania obrazu na żywo lub informacji diagnostycznych bezpośrednio z OpenMV Cam. Idealny do robotyki terenowej i wdrożeń autonomicznych.
Pełną dokumentację techniczną, zdjęcia i informacje o zamówieniu znajdziesz na stronie produktu LCD Shield.
Najważniejsze cechy¶
1,8-calowy wyświetlacz TFT LCD, 128x160, RGB565
Sterowane podświetlenie
Rozkład wyprowadzeń¶
Opis wyprowadzeń¶
Pin |
Funkcja |
|---|---|
P0 |
SPI MOSI — dane wyjściowe do LCD |
P2 |
Zegar SPI |
P3 |
Wybór układu SPI (chip select) |
P6 |
Sterowanie podświetleniem |
P7 |
Reset LCD |
P8 |
Polecenie SPI (wybór danych / polecenia) |
Szyna 3,3 V |
Zasila LCD |
Szyna GND |
Wspólna masa |
Informacja
Przetnij ścieżkę lutowniczą na spodzie shielda, aby odłączyć P6 od podświetlenia; podświetlenie jest wtedy włączone na stałe.
Zastosowanie¶
Strumieniuj ramki z kamery na wyświetlacz 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())
Steruj podświetleniem przez PWM dla regulowanej jasności. Opakuj machine.PWM w małą klasę kontrolera podświetlenia i przekaż ją do display.SPIDisplay przez argument backlight — SPIDisplay wywołuje backlight(value) na obiekcie, gdy potrzebuje zaktualizować poziom:
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())