久しぶりにマイコンボードに触りたくなって、MicroPythonを書き込んだESP32でI2CインターフェースのLCDに表示することにしました。
以下の内容は記載しません。MicroPythonのオフィシャルなどのホームページを参考にしてください。
ESP32にMicroPythonのファームウェアを書き込む方法
ESP32にPythonのスクリプトを書き込み方法
対話型ウィンドウ=REPLの操作方法
MicroPythonでI2CインターフェースのLCDにアクセスしている記事は多々ありましたが、参考にしたのはhttps://choco-tips.comの「ラズベリーパイ I2Cキャラクターモジュールを使う」です。Raspberry PiでI2CインターフェースのLCDのアクセスしている記事でした。 importしているライブラリー名などを多少変更するだけで使用することができました。
あと、私が持っているESP32がI2Cと相性が悪いのかわからないですが、ハードウェアI2Cだとうまく動作せず、ソフトウェアI2Cを使用しています。
#This python program is a fork of Choco-Tips.com #Fixed by MacaroniPeinguin from time import sleep from machine import Pin,SoftI2C i2c = SoftI2C(scl = Pin(21),sda = Pin(22),freq = 100000) LCD_ADDR = 0x50 buff = bytearray(2) def cmd(a, b, msec = 0): buff[0] = a buff[1] = b i2c.writeto(LCD_ADDR, buff) if msec > 0: sleep(msec / 1000) def send_text(text): bin = text.encode("utf-8") for ch in bin: cmd(0x80, ch) def clear(): cmd(0x00, 0x01, 20) cmd(0x00, 0x38, 10) cmd(0x00, 0x0c, 10) cmd(0x00, 0x06, 10) def move_cur(col, row = 0): if row > 0: col = col + 0x40 col = 0x80 | col cmd(0x00, col, 20) def print_test(): clear() move_cur(0, 0) send_text("Keep on asking, ") move_cur(0, 1) send_text("Keep on seeking.") if __name__ == '__main__': print_test()
※コメント投稿者のブログIDはブログ作成者のみに通知されます