LCD Shield

LCD Shield är en 1,8 tums 128x160 SPI TFT för att visa direktbildrutor eller felsökningsinformation direkt från OpenMV Cam. Idealisk för fältrobotik och fristående driftsättningar.

LCD Shield

För fullständigt datablad, foton och beställning, se produktsidan för LCD Shield.

Höjdpunkter

  • 1,8 tums TFT LCD, 128x160, RGB565

  • Styrbar bakgrundsbelysning

Stiftutgång

Stiftutgång för LCD Shield

Stiftreferens

Stift

Funktion

P0

SPI MOSI — data ut till LCD:n

P2

SPI-klocka

P3

SPI chip select

P6

Styrning av bakgrundsbelysning

P7

LCD-återställning

P8

SPI-kommando (data-/kommandoval)

3,3 V-skena

Försörjer LCD:n

GND-skena

Gemensam jord

Anteckning

Skär av lödbanan på shieldets baksida för att koppla bort P6 från bakgrundsbelysningen; bakgrundsbelysningen är då permanent på.

Användning

Strömma kamerabildrutor till 128×160 SPI-displayen:

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

Driv bakgrundsbelysningen via PWM för justerbar ljusstyrka. Slå in machine.PWM i en liten styrklass för bakgrundsbelysning och skicka den till display.SPIDisplay via dess backlight-argument — SPIDisplay anropar backlight(value) på objektet när den behöver uppdatera nivån:

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