ST7735R な 1.8 インチ TFT、KMR-1.8 SPI
Amazon の KMR-1.8 SPI 1.8 SPI TFT 128*160 って表示器について、3マイコンでサンプル動かしてみたよ~って記事です。
ST7735 な TFT がもう一個欲しくなった
(緑色のベロをはがしてしまったけれど)ドライバが ST7735 な SPI TFT が一個あります。これは私にとっては思い入れが深い TFT です。何かガジェット的なものとして完成させるときには使いたくないので、もう一個欲しくなりました(というか表示器は何個でも欲しいですね)。
この TFT は Adafruit_ST7735 クラスの
initR( INITR_BLACKTAB )
で初期化してサンプルスケッチを走らせています。
そもそも GREENTAB で正しく初期化できない時点でアレなんですけど、でもまぁ動けばいいと思うんです。
この紫基板の ST7735 な TFT は 2k Yen とトゥ~~~エクスペンセブでしたが、アマズォンではお安いのがあるんですよ。という事でちうもんしました。当時 559 円。一時期 500 円きってたのでうらやましいですね~ 171130 現在商品在庫無いですが一応リンク
ebay だともっと良い感じですね。
※ HiLetgo というバイヤーを頼りに格安部品を手に入れる遊びをしていたわけですが、もうできなくなりましたね。2017/09/17 にアカウント操作でミスをし一週間停止され、自社(中国)からの発送が Amazon 側から禁止されたとのことです。現在は価格や在庫が従来とはまったく違ってしまっており、さらにこの状態は二度と回復する事がないとのことなので、非常に残念です…( ˘-˘;)
到着
ホゲー RGB が BGR だぜ!なんてこった! って思ったのが今年 2017 年 5 月のことでした。初期化は同じく initR( INITR_BLACKTAB ) です。ほかの定数を全て試しましたがうまくいきません。ベロが赤いので素直に初期化関数に INITR_18REDTAB を渡すと RGB 順ではあるけれど、なんでか 1.44 インチとして初期化されます。困りますー
一応文字列を表示する事くらいには使えますし急いでも困ってもいないのでケースに入れて眠らせておきました。
あと通信名によってピンの名前が変わるのか、サンプルスケッチにあるピン名とモジュールに印字されてる名前が統一されてなくて分かりにくいですよねー A0 は DC、SDA は MOSI です。
簡単に RGB にできるよ
で先日ちょっとやる気が出たのでライブラリをいじりまわしてみたら正しく表示できる初期化が見つかりました。ごらんのとおり 1.8 インチ RGB で表示されてますね。ワーイ
Adafruit_ST7735.h ファイルを開いて
#define INITR_18REDTAB INITR_REDTAB
となっているのを
#define INITR_18REDTAB 0x9
とか、テキトーな値にしてやります。こうすると所望の初期化が得られます。
( ̄∇ ̄ )ヤッター
とくると次はこれ
次は ESP8266 (ESP-WROOM-02) です。328P に比べてマイコンが速いんですよ。早速サンプルスケッチのピンを再定義して書き込みます。
ギェエエ ここでフリーズします(WDT 再起動で無限ループすることもあります)。
おかしいなぁ。前に書いた記事読んだら「ST7735 は公式に ESP8266 に対応している」ってあるんですよ。確かにちゃんと動いてたんですよ。コードのスクショとってあって良かったですね。現在の実装と違います。…なんで動くものを改変してしまうんでしょう
まぁ落胆したり変な苦労するまえに ESP8266 に最適化された超高速な ST7735 ライブラリがあったのを思い出しました。github に行きましょう。
https://github.com/norm8332/ST7735_ESP8266
これはいいライブラリです。ESP8266 専用ですけど、サンプルスケッチの斜線のところなんかあっという間に描き終えてしまいます。
注意点は既存の Adafruit_ST7735 と名前が同じなので共存ができません。面倒ですが ESP8266_ST7735 にリネームしておきます。自分は明瞭なほうがいいのでクラス名も変えてありますが必要ではありません。
ESP32 では標準ライブラリで普通に動く
この記事を書きながら、ESP8266 やるんだったら ESP32 (ESP-WROOM-32) もやらんとダメだなと思って動かしてみました。ESP8266 で動かないので動かないかと思いましたが、ESP32 では Adafruit_ST7735 ライブラリでサンプルスケッチがちゃんと動きます。ヨカッタネ
ただしソフトウェア SPI (初期化で MOSI, SCLK ピンも指定するやつ) だと不具合があります。表示されたと思ったらすぐ画面が停止します。マイコンは停止しません。
んー。ESP8266 でだけ動かないってのは自分がどこかを勘違いしてるのかなぁ。解せないですねー。
とりあえず3つの主要 Arduino 系マイコン(主観)できちんと動く方法を持てたので、深く考えない事にします(これは他人が作ったライブラリを使わせていただく身の宿命でしょう)。また何かおかしなことがあったら動くまで粘りましょ( ˘ᵕ˘ )
Leonardo (pro micro) もあるんだった。一応これも後日試しておこう。
171130 追記:厳密にいうと pro micro は Arduino でも Leonardo でもない事を頭の隅に…(http://blog.pineapple.cc/post/111275201256/arduino-pro-micro)
pro micro でも動く
RESET= 9
A0(DC)= 8
SDA(MOSI)= 16 (変えられない)
SCL(SCLK)= 15 (変えられない)
CS= 10
とスケッチを変更すると動きました。ハードウェア SPI ピンはミスター PINOUT な彼のサイトを見ればすぐにわかります。
http://www.pighixxx.com/test/portfolio-items/pro-micro/
速いかなぁワクワクと期待していたんですけど、そういえば pro micro も 16MHz なので変わりませんね。
内容的にはそりゃ動作するやろって感じですが、では以上で KMR-1.8 SPI を手持ちの各ボードで動かしてみる事については終わります。