LCD Shield¶
LCD Shieldは、OpenMV Camから直接ライブフレームやデバッグ情報を表示するための、1.8インチ128x160 SPI TFTです。フィールドロボティクスやスタンドアロン展開に最適です。
完全なデータシート、写真、注文方法については、LCD Shield製品ページ を参照してください。
主な特長¶
1.8インチTFT LCD、128x160、RGB565
制御可能なバックライト
ピン配置¶
ピンリファレンス¶
ピン |
機能 |
|---|---|
P0 |
SPI MOSI — LCDへのデータ出力 |
P2 |
SPIクロック |
P3 |
SPIチップセレクト |
P6 |
バックライト制御 |
P7 |
LCDリセット |
P8 |
SPIコマンド(データ/コマンド選択) |
3.3Vレール |
LCDに電源を供給 |
GNDレール |
共通グラウンド |
注釈
シールド裏面のはんだトレースをカットすると、P6をバックライトから切り離せます。その場合、バックライトは常時オンになります。
使い方¶
カメラフレームを128×160 SPIディスプレイにストリーミングします:
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 を小さなバックライトコントローラークラスでラップし、backlight 引数を通じて display.SPIDisplay に渡します。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())