LCD Shield¶
LCD Shield este un TFT SPI de 1,8 inch și 128x160 pentru afișarea cadrelor live sau a informațiilor de depanare direct de la OpenMV Cam. Ideal pentru robotică de teren și implementări de sine stătătoare.
Pentru fișa tehnică completă, fotografii și comenzi, consultați pagina produsului LCD Shield.
Caracteristici principale¶
LCD TFT de 1,8 inch, 128x160, RGB565
Iluminare de fundal controlabilă
Pinout¶
Referință pini¶
Pin |
Funcție |
|---|---|
P0 |
SPI MOSI — date de ieșire către LCD |
P2 |
Ceas SPI |
P3 |
Selecție cip SPI |
P6 |
Controlul iluminării de fundal |
P7 |
Resetare LCD |
P8 |
Comandă SPI (selecție date / comandă) |
Linia de 3,3 V |
Alimentează LCD-ul |
Linia GND |
Masă comună |
Notă
Tăiați traseul de lipitură de pe partea posterioară a shield-ului pentru a deconecta P6 de la iluminarea de fundal; iluminarea de fundal rămâne apoi permanent aprinsă.
Utilizare¶
Transmiteți cadrele camerei către afișajul 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())
Acționați iluminarea de fundal prin PWM pentru luminozitate reglabilă. Încapsulați machine.PWM într-o mică clasă de controler al iluminării de fundal și pasați-o către display.SPIDisplay prin argumentul său backlight — SPIDisplay apelează backlight(value) pe obiect ori de câte ori trebuie să actualizeze nivelul:
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())