Raspberry Pi Pico2W でI2C液晶を使う

Raspberry Pi Pico2W でI2C液晶を使う

色々調べても、表示できなかった・・・
ずいぶん時間かかりました・・・
以前に購入していてarduinoでは表示を確認していました。
液晶は、I2C低電圧キャラクタ液晶モジュール(16x2行)
販売 マルツ MI2CLCD
   strawberry Linux https://strawberry-linux.com/catalog/items?code=27001
参考にしたのが、MicroPython的午睡(22) ラズパイPico、AQM1602 LCDパネル接続
ただ、エラーになるので修正しました。
buf = bytearray(lin) → bytearray(lin,”utf-8″)

import time
from machine import Pin, I2C

i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=100000)
adrAQM1602 = 0x3E
datAQM1602 = 0x40
comAQM1602 = 0x00

def writeDatAQM1602(dat):
    i2c.writeto_mem(adrAQM1602, datAQM1602, bytes([dat & 0xFF]), addrsize=8)
    time.sleep_ms(1)    

def writeComAQM1602(com):
    i2c.writeto_mem(adrAQM1602, comAQM1602, bytes([com & 0xFF]), addrsize=8)
    time.sleep_ms(1)    

def initAQM1602():
    time.sleep_ms(100)
    writeComAQM1602(0x38)
    time.sleep_ms(20)
    writeComAQM1602(0x39)
    time.sleep_ms(20)
    writeComAQM1602(0x14)
    time.sleep_ms(20)
    writeComAQM1602(0x73)
    time.sleep_ms(20)
    writeComAQM1602(0x56)
    time.sleep_ms(20)
    writeComAQM1602(0x6C)
    time.sleep_ms(20)
    writeComAQM1602(0x38)
    time.sleep_ms(20)
    writeComAQM1602(0x01)
    time.sleep_ms(20)
    writeComAQM1602(0x0C)
    time.sleep_ms(20)

def writeLineAQM1602(nL, lin):
    print(lin)
    buf = bytearray(lin,"utf-8") ## <<< ここを修正 ,"utf-8" を追加
    if len(buf) <= 0:
        return False
    if len(buf) > 16:
        buf = buf[0, 16]
    if nL == 0:
        writeComAQM1602(0x80)
    else:
        writeComAQM1602(0xC0)
    for idx in range(0, len(buf)):
        writeDatAQM1602(buf[idx])
        
initAQM1602()
writeLineAQM1602(0, "Hello, World!")
writeLineAQM1602(1, "1234567890ABCDEF")