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.

LCD Shield

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

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