LS027B4DH01用のMicroPythonモジュール(ESP32)

2020/08/31 categories:ESP32| tags:ESP32|MicroPython|LS027B4DH01|

MicroPythonブートローダを書き込んだESP32でLS027B4DH01を使うためのモジュールを作成しました。

使い方

文字列描画用のフォント

フォントデータはgithubにアップロードしていないのでこの記事のプログラムを使用してフォントデータを用意します。フォントデータの中身は以下のようなファイルです。

初期化

LS027B4DH01をimportしてLS027B4DH01()でオブジェクトを作成します。その後、SPIの設定を行い、SCS、extcomin、dispピンを設定してからLS027B4DH01.initialize()を実行することでLS027B4DH01にデータを送信する準備が整います。

from machine import Pin, SPI
from LS027B4DH01 import LS027B4DH01

lcd = LS027B4DH01()
lcd.spi = SPI(
    2, #vspi = id = 2
    baudrate=2_000_000, #1MHz
    polarity=0, phase=0, bits=8, firstbit=SPI.LSB,
    sck=Pin(18), mosi=Pin(23), miso=Pin(19)
)
lcd.scs      = Pin(32, Pin.OUT)
lcd.extcomin = Pin(33, Pin.OUT)
lcd.disp     = Pin(25, Pin.OUT)
lcd.initialize()

1行分のデータを書き込む

行番号と1行分のデータ(50バイト)を渡して1行分のデータを書き込みます。この関数では描画用バッファを使用しないので、後述の点描画から文字列描画までと混在して使用すると予期せぬ表示になります。

lcd.data_update_one_line(120, [0x00] * 50)

複数行分のデータを書き込む

書き込みを実行したい連続する複数行の開始行番号とその行数×50バイトのデータを渡して複数行のデータを書き込みます。この関数では描画用バッファを使用しないので、後述の点描画から文字列描画までと混在して使用すると予期せぬ表示になります。

lcd.data_update_multi_line(160, [ [0x00] * 50 for i in range(5) ])

点を描画する

x, y座標を指定して点を描画します。lcd.dot(x, y)でバッファに値を書き込み、lcd.data_update_all_line()でLCDへのデータ送信を行います。

lcd.data_reset()
lcd.dot(100, 100)
lcd.data_update_all_line()

2点を通る線分を描画する

1点目の座標(x1, y1)と2点目の座標(x2, y2)を指定して線分を描画します。lcd.line(x1, y1, x2, y2)でバッファに値を書き込み、lcd.data_update_all_line()でLCDへのデータ送信を行います。

lcd.data_reset()
lcd.line(   0,   0,   0, 239)
lcd.data_update_all_line()

文字を描画する

x, y座標を指定して文字を描画します。

lcd.data_reset()
lcd.line(   0,   0,   0, 239)
lcd.data_update_all_line()

文字列を描画する

x, y座標を指定して文字列を描画します。

lcd.data_reset()
lcd.string(50, 50, 'hello world')
lcd.data_update_all_line()

表示をクリアする

lcd.clear_all()

ソースコード

githubにアップロードしました

Share post

Related Posts

コメント