
TinyGOを使用したグラフィック液晶(AQM1248)テストプログラム
はじめに
今回はTingyGOを使用してグラフィック液晶であるAQM1248Aの制御に取り組みました。また、グラフィック液晶に文字表示するにはキャラクタ液晶等は異なり、表示するための文字フォントデータが必要となります。そのため、フォントデータ漢字フォントROMであるGT20L16J1Yを使用してフォントデータを取得し、文字表示ができるようにしました。
使用部品
使用した部品は下の表の部品です。
使用部品 | 型番・値 | 購入先 |
---|---|---|
マイコン | RaspberryPI PICO | 秋月電子 |
グラフィック液晶 | AQM1248A | 秋月電子 |
漢字フォントROM | GT20L16J1Y | スイッチサイエンス |
回路図
回路図は下の図のようになります。RaspberryPI PICOと漢字ROMやグラフィック液晶はSPIを使用してデータのやりとりを行います。
GT20L16J1Yについて
GT20L16J1Yは半角の英数字や記号と第2水準までの漢字フォントのデータが格納されており、漢字についてはSJISコードをでフォントのデータを管理しています。Arduinoなど最近のエディタはUTF-8で漢字を管理しており、UTF-8をSJISに変換する必要があります。Go言語ではUTF-8をSJISに変換するライブラリがあるのでそれをインポートして、SJISに変換し、GT20L16J1Yから漢字フォントのでデータを読み出ししています。
文字コード変換処理
// 文字コードの変換
t := japanese.ShiftJIS.NewEncoder() // ShiftJISエンコーダ
sjisStr, _, err = transform.Bytes(t, []byte(str)) // コード変換処理
プログラムについて
動作確認用のプログラムです。下のプログラムはメインの部分だけです。AQM1248やGT20L16J1Y関係のプログラムは載せるとコードが長くなるので、私のGitHubのリポジトリに置いてあるので見ていただけたらと思います。
メインプログラム
import (
"AQM1248/LcdProc"
"fmt"
"machine"
"time"
)
func timer1ms(ch chan<- bool) {
for {
time.Sleep(10 * time.Millisecond)
ch <- true
}
}
func main() {
var err error
var cnt uint8
var str string
led := machine.LED
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
spi := machine.SPI0
err = spi.Configure(machine.SPIConfig{})
if err != nil {
panic(err)
}
dc := machine.GP14
csn1 := machine.GP15
csn2 := machine.GP17
disp := LcdProc.New(spi, &csn1, &dc, &csn2)
disp.Configure()
ch := make(chan bool)
go timer1ms(ch)
for {
select {
case <-ch:
cnt += 1
break
}
led.Low()
time.Sleep(100 * time.Millisecond)
led.High()
time.Sleep(100 * time.Millisecond)
disp.LcdPrint(0, 0, "漢字だよ")
disp.LcdPrint(0, 16, "Test Program")
str = fmt.Sprintf("Cnt=%d", cnt)
disp.LcdPrint(0, 32, str)
}
}
最後に
今回はTinygoでAQM1248とGT20L16J1Yを使用した表示プログラムについて紹介しました。SPIで制御できるので簡単にできるのですが、GT20L16J1YはSJISコードでフォントデータを取得するので、UTF-8を使用していTinyGOのようにライブラリを使用すれば簡単にできますが、C言語ではUTF-8,SJISの変換が難しいとは思います。CH32Vでも取り組んでおり、フォントデータを取得するのは簡単できたのですが、UTF-8をSJISに変換するプログラムを考えています。よい方法があったら教えていただけたらと思います。
投稿者の人気記事
-
keiske-hongyo
さんが
2025/03/16
に
編集
をしました。
(メッセージ: 初版)
-
keiske-hongyo
さんが
2025/03/16
に
編集
をしました。
ログインしてコメントを投稿する