M5Stackで日本語表示(2)
M5Stackでの日本語表示の続きです。
前回とは別の自作ライブラリをM5Stack対応の修正を行いました。
利用ライブラリ
・Arduino-KanjiFont-Library-SD
Arduino用のマルチサイズ漢字フォントを利用するためのライブラリ(SDカード版)
https://github.com/Tamakichi/Arduino-KanjiFont-Library-SD
ライブラリを使って、「吾輩は猫である」の文書を表示してみました。
動いている様子
8ドットから24ドットのフォントサイズを変えて繰り返し表示しています。
動画を見れば分かると思いますが、表示はあまり速くないです。
逐次、SDカードから読んでいるためかと思われます。
まあ、とりあえずは良しとします。
スケッチ
表示の高速化のため、M5Stackで利用されている液晶パネルILI9341のWindows機能を利用してフォントの表示を行っています。
drawPixel()を使うよりもコマンド送信数が少なくて済むので多少は速くなると思います。
ただし、SDカードアクセスが遅いためあまり効果としては現れませんね。
ちょっとハマった..
今回はテキストをスクロールさせるつもりでscrollUp()関数を作成したのですが、
期待通りに動きませんでした。
プログラム的には、指定座標のピクセル色を読んで、1文字分上に表示でスクロールさせようとしたのですが..
「何故だろう..?」と調べると、
なんとMISO(LCDからデータを読む)が使われていません。
(回路図は公式サイトより入手し引用)
これでは、物理的にデータの取得は出来ないですね。
ですので用意されている readPixel()、 readRect() は正常に動きません。
ためしてみると、ピクセルの色は常に 65535の値が返されます。
もう一点、ウィンドウ設定でsetAddrWindow()を使っているのですが、
setWindow()だと正しく表示出来ませんでした。
setAddrWindow()は、内部的にsetWindow()を読んでいるのですが、
SPIの設定を行ってからsetWindow()が呼び出されています。
SPIがSDカードのアクセスと共用のため、SPIの設定が必要だったのだと思われます。
とりあえずは、ウィンドウ設定の関数が用意されているのが分かったのは収穫でした。
追記
MOSIを双方向にてデータを読む方法があるようです。
関連情報
・M5Stackで画面キャプチャーを取得する
https://qiita.com/fukuebiz/items/8aff6cad2f6048f02f12
・Bodmer/TFT_eSPI
Arduino and PlatformIO IDE compatible TFT library optimised for the STM32,
ESP8266 and ESP32 that supports different driver chips
https://github.com/Bodmer/TFT_eSPI
M5Stackのライブラリ=v0.2.9)のTFT_eSPIが古いため、現時点で readPixel()、 readRect() が使えないようです。
まあ、いずれ、TFT_eSPIの最新版を取り込んで利用可能になると思います。
最近のコメント