LCD Shield

LCD Shield là màn hình TFT SPI 1,8 inch 128x160 để hiển thị khung hình trực tiếp hoặc thông tin gỡ lỗi ngay từ OpenMV Cam. Lý tưởng cho robot hoạt động ngoài thực địa và các triển khai độc lập.

LCD Shield

Để xem datasheet đầy đủ, hình ảnh và đặt hàng, hãy truy cập trang sản phẩm LCD Shield.

Tính năng nổi bật

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

  • Đèn nền có thể điều chỉnh

Sơ đồ chân

LCD Shield Pinout

Tham chiếu chân (pin)

Chân (pin)

Chức năng

P0

SPI MOSI — đầu ra dữ liệu đến LCD

P2

Xung nhịp SPI

P3

Chip select SPI

P6

Điều khiển đèn nền

P7

Reset LCD

P8

Lệnh SPI (chọn dữ liệu/lệnh)

3.3V rail

Cấp nguồn cho LCD

GND rail

Đất chung

Ghi chú

Cắt dây hàn ở mặt sau của shield để ngắt kết nối P6 khỏi đèn nền; khi đó đèn nền luôn sáng.

Sử dụng

Truyền trực tiếp các khung hình camera lên màn hình 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())

Điều khiển đèn nền qua PWM để điều chỉnh độ sáng. Bọc machine.PWM trong một lớp điều khiển đèn nền nhỏ và truyền nó vào display.SPIDisplay thông qua tham số backlightSPIDisplay gọi backlight(value) trên đối tượng bất cứ khi nào cần cập nhật mức độ:

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