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.

LCD Shield

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

Pinout-ul LCD Shield

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 backlightSPIDisplay 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())