LCD Shield¶
LCD Shield — это 1,8-дюймовый SPI TFT-дисплей 128x160 для показа живых кадров или отладочной информации непосредственно с OpenMV Cam. Идеален для полевой робототехники и автономных решений.
Полный datasheet, фотографии и информацию для заказа смотрите на странице продукта LCD Shield.
Основные характеристики¶
1,8-дюймовый TFT LCD, 128x160, RGB565
Управляемая подсветка
Распиновка¶
Описание выводов¶
Вывод |
Функция |
|---|---|
P0 |
SPI MOSI — вывод данных на LCD |
P2 |
Тактовый сигнал SPI |
P3 |
Выбор кристалла SPI (chip select) |
P6 |
Управление подсветкой |
P7 |
Сброс LCD |
P8 |
Команда SPI (выбор данные / команда) |
Шина 3,3 В |
Питает LCD |
Шина GND |
Общая земля |
Примечание
Перережьте паяную дорожку на обратной стороне шилда, чтобы отключить P6 от подсветки; после этого подсветка будет постоянно включена.
Использование¶
Передавайте кадры камеры на 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())
Управляйте подсветкой через PWM для регулируемой яркости. Оберните machine.PWM в небольшой класс контроллера подсветки и передайте его в display.SPIDisplay через аргумент backlight — SPIDisplay вызывает backlight(value) у объекта всякий раз, когда нужно обновить уровень:
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())