keiske-hongyoのアイコン画像
keiske-hongyo 2025年03月16日作成 (2025年03月16日更新) © GPL-3.0+
セットアップや使用方法 セットアップや使用方法 閲覧数 337
keiske-hongyo 2025年03月16日作成 (2025年03月16日更新) © GPL-3.0+ セットアップや使用方法 セットアップや使用方法 閲覧数 337

TinyGOを使用したグラフィック液晶(AQM1248)テストプログラム

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に変換するプログラムを考えています。よい方法があったら教えていただけたらと思います。

1
1
keiske-hongyoのアイコン画像
マイコンを活用した電子工作に取り組んでいます。 もしよかったら、色々とアドバイスをいただけたらと思います。
ログインしてコメントを投稿する