前回までの状況はこちら。
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()