【ラズパイ】【GLCD】ASCII文字を表示する

前回までの状況はこちら。

PythonコードをgitHubにアップしました。

https://github.com/takishita2nd/GLCD

サンプルソースにフォントのビットパターンデータがありましたので、これを置換処理を使ってPython用に書き換えました。

https://github.com/takishita2nd/GLCD/blob/master/Font.py

これを使用して、ディスプレイにアスキー文字を表示させます。

    [ 0x7e, 0x11, 0x11, 0x11, 0x7e ], # A   0x41

1文字8×5のサイズになっているようです。

お試しで表示させてみました。

chara = [0x7e, 0x11, 0x11, 0x11, 0x7e]

def __main():
    PinsInit(20, 7, 8, 9, 18, 19, 10, 11, 12, 13, 14, 15, 16, 17)
    GLCDInit()
    GLCDDisplayClear()
    addr = 0
    SelectIC(1)
    SetPage(0)
    for c in chara:
        SetAddress(addr)
        WriteData(c)
        addr += 1

    try:
        while True:
            time.sleep(1.0)
    except KeyboardInterrupt:
        GPIO.cleanup()

このデータを表示するサンプルコードをPython用に書き換えました。

def GLCDPutc(Xp, Yp, c):
    code = ord(c)
    #ページ内のラインを選択
    L = Yp % 8
    #8×5のキャラクター文字を描画する
    for i in range(5):
        SetLocation(Xp + i, Yp)
        f = Font.Array[code - 0x20][i] << L
        WriteData(f)
        if (L != 0) & (SetPg < 7):
            SetPage(SetPg + 1)
            SetAddress(SetCol)
            f = Font.Array[code - 0x20][i] >> (8 - L)
            WriteData(f)
def SetLocation(Xp, Yp):
    global SetPg
    global SetCol
    cs = 0
    #チップの選択とカラムのアドレスの処理を行う
    if Xp < 64:
        #左側(IC1)を選択
        cs = 1
        SetCol = Xp
    else:
        #右側(IC2)を選択
        cs = 2
        SetCol = Xp - 64
    #ページとラインの選択
    SetPg = Yp // 8
    #LCDに描画するアドレスの位置を設定
    SelectIC(cs)
    SetPage(SetPg)
    SetAddress(SetCol)

好きな場所に文字を書くことができます。

ページ跨ぎとか、チップ跨ぎにも対応しているようです。

def __main():
    PinsInit(20, 7, 8, 9, 18, 19, 10, 11, 12, 13, 14, 15, 16, 17)
    GLCDInit()
    GLCDDisplayClear()
    GLCDPutc(20, 5, "B")

    try:
        while True:
            time.sleep(1.0)
    except KeyboardInterrupt:
        GPIO.cleanup()

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください