今回はカタカナ文字に対応しました。
入力はあくまでも半角のカタカナでお願いします。
書き込むスクリプト名をacm.pyとした場合
import acm
acm.clear()
acm.send_text('キョウハイイテンキ')
とすれば表示します。
さらにこのlcdには「千」とか「万」とか「円」とか表示できるのですが、これは
acm.cmd(0x80,0xfa) → 千
acm.cmd(0x80,0xfb) → 万
acm.cmd(0x80,0xfc) → 円
で、直接コードを叩いてください。
最後に一ついいわけなのですが、本当はencodeする際にshift-jisを指定すればよいのですが、本家のPythonはうまくエンコードできたのですが、MicroPythonのほうが対応していなくてうまく動作しませんでした。 MicroPythonのフォーラムに書き込みましたが、対応してくれるかどうか・・・・
なんとかカタカナが表示できたので、やっと次のステップに進めそうです。
#This python program is a fork of Choco-Tips.com #Fixed by MacaroniPeinguin #Version 2022.04.15 Choco-Tips.comバージョンをESP32に対応 ブログバージョン #Version 2022.04.20 様々なプラットフォームに対応 #Version 2022.04.23 カタカナ表示に対応 import sys from time import sleep from machine import Pin LCD_ADDR = 0x50 platform_name = sys.platform if 'esp8266' == platform_name: from machine import I2C i2c = I2C(scl = Pin(5),sda = Pin(4),freq = 100000) elif 'esp32' == platform_name: from machine import SoftI2C i2c = SoftI2C(scl = Pin(22),sda = Pin(21),freq = 100000) else: from machine import I2C i2c = I2C(scl = Pin(5),sda = Pin(4),freq = 100000) def cmd(a, b, msec = 0): buff = bytearray(2) buff[0] = a buff[1] = b i2c.writeto(LCD_ADDR, buff) if msec > 0: sleep(msec / 1000) def send_text(text): for ch in text: list_t = [] list_t1 = [] list_t = ch.encode("utf-8") for i in list_t: # print ("i",hex(i)) if i < 0x80 or 0x9f < i: list_t1.append(i) else: list_t1.append(i+0x40) cmd(0x80,list_t1[-1]) 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("タズネツヅケナサイ") move_cur(0, 1) send_text("モトメツヅケナサイ") if __name__ == '__main__': print_test()