ST7735に液晶知識0からの画像表示 LovyanGFX

また長い期間開いてしまいましたが、色々と勉強した結果、以前作成したこれが

こうなりました^^

前回ESP8266で画像表示まで到達できましたが、あれでは全然やりたいことが表現できませんw
これが実現できたのはLovyaGFXというライブラリーに出会ったからです^^。

まずは前回画像表示が出来て大喜びだったのですが、画像表示が当たり前に出来るようになるとその表示速度が気になり始めます^^;

やはり、これでは遅すぎます^^;

で、今まではグーグル等で普通に検索していたのですが、なんの拍子にそう思ったのか忘れましたがツイッターで検索してみました。すると超高速で描画されている動画発見w

で、ツイートを見てみるとLovyanGFXというライブラリーを使用されているとのこと。
早速そのライブラリーを使ってみることに!

とりあえず分からないなりにこんな感じなのかな?とスケッチを修正して動かしてみたものがこちら

ちょっww色などはともかく超高速ww複数枚の画像を切り替えて表示されているのですがなんちゅう早さww
で、これをたまたまツイッターでこんなに高速に表示されます。色がおかしいのでまだまだ勉強必要です。とツイートしたのですが、するとなんとこのLovyanGFXのライブラリーを作られたご本人からリプライを頂き、色の調整の仕方を教えて頂きました!

その際、SPIFFSからの画像表示についても質問してみたのですが、するとありがたい事にその方法についても教えて頂けました。
まず一番初めに教えて頂いたコマンドdrowJpegFileを試してみたのですが

こんな感じで以前の画像が残っているうえに表示したい画像が線状の表示でまともに表示されていませんでした。

するとらびあんさから画面の設定が間違っている可能性があるとのことで、その設定方法まで教えて頂きました。

これがダメだった時のスケッチ例の2_spi_settingの表示ですが

らびあんさんのご指導で正常な表示に

これで、画像表示をしてみると(この時点では赤と青の表示が反対になっています^^;)

おおっ!!!!念願のESP32での画像表示が!!!!!!

結構この表示が出来るまで時間がかかったのですが、らびあんさんは懇切丁寧に私のような初心者を最後まで面倒見てくださいました(><)ホントなんていい人なんだ・・・・!!
もう死ぬほどありがとうございますm(_ _)m
一度は諦めたESP32での画像表示ようやく達成できました!!!長かった~^^;

 

てなことで、同じようにやってみたいと思われる方用にlovyanGFXの使い方の説明を少し^^;

まずは、arduino IDEのライブラリーの管理でlovyaGFXを検索してインストール。

で、使うLCDに合わせて設定を行わないといけません。

ファイル→スケッチ例→LovyanGFX→HowToUse→2_spi_settingでこれを自分の使用したい環境に合わせて変更し、その設定部分を他のスケッチ例にコピペして使います。

今回私の場合は
ST7735  80x160の液晶
VSPI使用で
SCK=18(ピン番号)
SDA=23
CS=14
DC=27
RESET=33
BLK=32
という設定で使用します。

実際にスケッチ例のCollisionCirclesにコピペしたものがこちら

 


#include <LovyanGFX.hpp>(1行目)の後ろに
2行目のstruct LGFX_Configから17行目のstatic lgfx::Panel_ST7735S panel;までを
張り付け。
さらにsetup内の
249行目から286行目までを張り付けています。
この2つのパート部分がST7735を80×160で使うための設定です。
それぞれの設定値の意味については2_spi_settingを見てください。

このほかのSpriteのスケッチ例も上記の部分を張り付けて設定しなおせば動かすことが出来ます。
初めはこの設定が分からなくて、らびやんさんにご指導いただいた部分です。

ちなみに後からアリエクスプレスで購入した同じ液晶なのですが、少し設定を変えないと色や表示位置がおかしい物が有りました。そんな時は下のように変更してください。

setup内に張り付けた部分の一部ですが、

panel.invert = true;
panel.reverse_invert = true;
panel.rgb_order = false;

panel.memory_width = 128;
panel.memory_height = 160;
panel.panel_width = 80;
panel.panel_height = 160;
panel.offset_x =24;
panel.offset_y = 0;

panel.invert = false;
panel.reverse_invert = true;
panel.rgb_order = false;

panel.memory_width = 132;
panel.memory_height = 162;
panel.panel_width = 80;
panel.panel_height = 160;
panel.offset_x =26;
panel.offset_y = 1;

に修正です。
これで正常に表示されています^^

で、これでSpriteのどのスケッチ例も動かせるようになったのですが、これらのスケッチ例を見ていると画像が結構グリングリン動いているんですよね~。
そもそもspriteて何????てな初心者ですからネットにドボンでw

こちらのサイトで的確に説明されておられて、スクロールについてまで勉強出来ました。
なるほど~!そういう事か!!

よし!!これで基本は出来たぞ~~!てなことでまた最初から少しずつ製作していきます。たとえば、ミサイル迎撃画面。

まずはサブモニターにスプライトで作っておいた画面を縮小して貼り付け、メイン画面の枠を決めます。

次に味方マークの三角を描画。

編隊になるように数を増やして

この時急遽上に文字とか表示する枠を作ったので最初の三角も移動
てな感じで少しづつ描画しては確認を繰り返していたのですが、最後ごろになると

これスプライトのプログラムですが、このように数字の羅列だけで

こんな感じになるだろうなというのが大体わかるようになりましたww

こうなると描画はスピードアップですwモニターとか無い病院の空き時間でもプログラム書けるようになって、家に帰ってモニターで確認してもそんなに大きな間違いしなくなりましたw

人間慣れってこわいww

とにかくプログラムが長くなり過ぎて、テストなども面倒になってきたので、

別ファイルでシーンごとにプログラム開発してテスト確認後、それを本編のプログラムにコピペして再度全体の流れをテストするという方法に^^

基本的な流れは前回のOLEDで分かっていましたので、前回の物では表現できなかったミサイルの軌跡とかも入れてみました。やはりマクロスと言えばあのミサイルですもんね~w

 

で、なんとかプログラムがあがったのが月曜日。その土曜日にはオンラインドロオフでのお披露目予定。

てなことで躊躇する間もなく前回のOLEDバージョンを取り外しw

どりゃ~~~!もったいないけどポイw

さらにモニター部分が変わったのでコンソールのモデリング修正

コンソールとコンソールカバーをリモデリング。
火曜日終了!

次の日、病院で3Dプリントして塗装。
TFT液晶の方も仕込むために出来るだけ小さく

ここまで基板を削れましたが、この後この液晶さんはお亡くなりになられました・・・・・・w
実はこれで液晶の交換の必要性が出て交換したら上記のように設定の一部を変えないといけない状況になり、その設定の変更にまた時間を取られてしまいましたw

あかんwそんなことやっている場合ではないwとりあえず削らなくても何とか入ることが分かりましたので、ドロオフ用にはそのままで行こうwあとでまた吟味しよう^^;

次にESP32の方も全部足ついているから内蔵には邪魔なので足部分のハンダを溶かして除去!

あれwESP32の基板からひげが生えた!ちょww基板のプリント部分が一部剥がれたwwww
強引に足を取りすぎww
でも大丈夫丁度その端子使わないwおひげは邪魔なのでカットさせていただきました。
水曜日終了!

おしゃ!とりあえずこれで全部仕込んでしまえ!

えっと、電源は、、、、、、5V端子に5V入力でもオッケー!それで行きます!

うし!何とか形になった!

次はフィギュアも塗装しておかねば!!
組み立ててみると・・・・・・・ぎゃ~~~!!ヘルメットパーツの赤い部分を一部無くしてるww

やべ~!間に合わない・・・・・終わったw
・・・・・・・・・・・・・あっw反対側から撮影すればいいのかwwパニクッてたw

よしw右のパーツ無い所みえないww
木曜日終了!

 

次は動画撮影だ~!

これまた光の具合や液晶の見え方等が気に入らずに何度も撮影して動画編集。
サウンドとどうしても合わない部分はプログラムの方の時間を調整して再度書き込み撮影しなおしwやべーよ終わらないよ~~~~!!
金曜日終了!

やば土曜日ドロオフオンラインの日が来ちゃったよ!!!
午前中は仕事なので午後からが勝負w
昼食も抜きで速攻で家に帰り、youtube用とtwitter用の動画を編集。でもyoutube用がどうしても気に入らずに結局金曜日に作ったもので行くことに。
twitter用は2分20秒に纏めないといけない・・・・・・ムリwwもういいやwとにかく削っちゃえww

てなことで電飾タイムの4時にギリギリ間に合いましたww

いや~ホント疲れたww
その分良い評価いただけたし、オンライン懇親会でも憧れのモデラーさん達にも褒めて頂けてホント嬉しかったです^^

ちなみに今回モニター表示に使った画像は動画やネットから集めた物を加工したので著作権の関係で再配布というわけにはいかないので、プログラムだけ上げてもあまり意味がないかもです^^;
それでも、アホなプログラム見てみたいという希望が有れば後日掲載します。ちなみに5000行越えですw

関連すると思われる記事:

8 comments

  1. ふんふんふむふむ。
    すやすや。ぴぃぴぃ。ぐご~~。
    はっ!
    よくもまあこんなことまでごいごいすーでございます。
    なんとなくラズパイとにたとこもあるかな?
    これはこれですごいですけど、動画パワーはラズパイもなかなか魅力的ですよ!
    と、また沼に引きずり込んでみる。
    ふふふ。

  2. てつのさん こんばんは!
    ラズパイですよね~!
    昨年ちょっとかじってみて美味しいのはわかったのですが、ラズパイでのCのプログラミング方法とかまだよくわからずにそのまま投げてありますw
    zeeoとかなら何とか模型に組み込めそうですが、、、、
    パワーではラズパイの方が上なんでしょうね~。
    そちらの勉強に振り分ける時間が見つかったら試してみます^^

  3. こんばんは!
    ドロオフお披露目までの工程はなかなかのドラマですね(^^;
    スクラッチからコピペがあまり効かなそうなプログラムを1週間程度でしょうか?で5000行ってなかなか凄まじいペースです。しかもこの完成度。
    相変わらず当然のようにバズってたしさすがですね~♪

  4. なおさん こんばんは!
    ドロオフお披露目間に合ってよかったですよww
    ホント動画作成時の音合わせがなかなかうまくいかずにプログラムも何回か書き換えました^^;
    プログラムは場面ごとに変わるのでなかなかコピペが効かないのですが、Spriteを使うことによってそれを移動させたり回転させたりしていますのでその辺は少しプログラムは楽でした。
    ただ、それでも最後のドックファイト部分は100ms単位で画面の表示プログラム書いていますw
    twitterの皆さんはコクピット好きなんですよね~w今回も沢山評価いただけて良かったです^^

  5. こんばんは!
    どひゃ~!!!
    動画がますますパワーアップしていますね、怒涛の様な一週間の作業が目に浮かびます。
    まずは、本当にお疲れさまでした。こんなに多忙な時に、いろいろアホな質問して、6jiroさんの大切な工作時間を無駄にさせて、申し訳ありませんでした。
    動画と音声をあわせて楽しませていただきました。もう、ニヤニヤしながら、「そーくるか~!」「お~」なんて言いながら、存分に雰囲気に浸れました。
    LovyanGFXは凄いですね。
    わたしはこれから6jiroさんの後を追いかけていきますので、よろしくお願いします!!

  6. Vividさん こんばんは!
    最終的にこのような動画になりました^^
    ホント最後は怒涛の1週間でしたw
    いえいえw Vividさんの質問はレベルが高すぎて答えられないことがほとんどですみませんw
    LovyanGFX最強ですよね~。あの高速描画とsprite機能はホント無限の可能性が広がりますよ!
    多分あと少ししたら、私がVividさんの背中を追いかける構造になるのは間違いありませんw

  7. スプライト使いこなすって、あとは当たり判定と入力つければゲームじゃないすかw

    いやー、直前までの追い込みの集中ぶりと仕事量はさすがです。
    今回は4jiro~6jiroまで出たのではないでしょうか?
    基盤削って没にしたり、メータープリントしなおしたり、パーツなくしたり、、、
    ブログネタ5回分くらいの容量を一気に駆け抜けましたねwww

    今回のプログラム量も半端ないですが、5000行って、、、
    物には限度ってものがあるでしょうにww

    ちなみに、私だったらめんどーくさいのでPCで動画作ってそれを小画角の動画に変換して、たらたらと再生して終わりにしますねw
    今回はちゃんと内部で処理してるんで、入力に対応させれば色々インタラクティブに動かせるんじゃないでしょうか。
    可能性広がります。

  8. gyoさん こんばんは!
    うむ・・・・・・確かにゲームにする方法が思いつくww
    とにかくまたなんだかんだで色々やりましたよ~!
    うっかりも、もうあの位ではビクともしませんからねw
    ちょっとパーツ無くした時はパニクリましたがww
    プログラムの約半分以上が最後のドッグファイトで費やされていますw
    あそこで3000行近く費やしていますからね^^;

    動画にして変換する方法も考えたのですが、80x64ドットでしょう、通常の絵なんてこのサイズに縮小すると何が書いてあるかわからなくなるんですよねww
    離陸の時のバックの絵とか何度加工しなおしたかww
    ちなみに、アシェットの方にも仕込めるか検討してフォッカーさんバージョンも作らないといけないかなと思案中ですw   
    本体はよ作れ!との声も聞こえてきますがww

Leave a Reply

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

wp-puzzle.com logo