このブログを読む前にVividさんのこちらのブログをお読みいただくと流れが分かりやすいと思います。
おかげさまでTXTファイルから読み出しがようやく出来るようになったと思ったら!
あっさりVividさんはBMPファイルから直接読み出し表示に成功しちゃいましたw
なんちゅう人だ全くwwプログラム見せてもらいましたが、わけわかりませんwwww
で、色々な問題点あるのですが、実はこの後、さらに発展しましたww
まずはちょっと流れを整理しときますw
私だけの力でTXTファイルから配列を読み込んだ気になっていた状態がこちら
で、VividさんにTXTファイルの「テキスト(ASCII文字)データ」を「バイナリ(
そしてSDカードとOLEDをそれぞれHSPIとVSPIに分けるように指導してもらった結果がこちら
これで表示できるようになったので、連続でTXTファイルを読み込めるように私がプログラムしたのがこちら
これが描画出来た時は感動したな~ww
しかし、表示は出来ているけど表示スピードが実用的ではないな・・・・・
そこで、私の方はESP32の大きなメモリを良いことにプログラム中に初めから配列を仕込んでおく方法に!
おおっ!流石に高速だでもメモリ内に仕込める画像の数は13枚が限界www
このような短い動画では使い物になりませんw
その間にVividさんはBMPファイルを直接SDから読み込めるようにプログラムを改変されていました。こちらにそのVividさんの奮闘の一部始終があります!
このVividさんのプログラムは高速表示されSD内のBMPファイルを読み込むので、自由度やファイルの用意の簡単さからも遥かに私の物より使いやすいのです。さらに開発が続いて連続表示のためのプログラムも作られたようです!
てな感じで2人で悪戦苦闘していたのですが、ある時一気に状況変化がww
いつものようにツイッターでこのOLEDのブログ「0.6 color OLED 01 グラフィックテスト」を更新しました呟きました。
するとなんと、らびやんさんからリプライいただきました。
いやはや私なんぞの低レベルツイートを見て頂けてるとは有り難い事です。
「LovyanGFXのSSD1351の設定で動くかもよ~」との事。
まじっすか!!!このOLEDはドライバーがSSD1357なのですが動く可能性があるとの事!
うん確かに数字は似ているww(超素人の考えw)
実はこのOLEDを動かす前に、LovyanGFXでも動かないかなと対応ドライバーは見ていたのでSSD1351に対応しているのは知っていたんですよね^^。でもこのOLEDはSSD1357だから諦めていました^^;
で、設定を適当にでっち上げて動かしてみると
ああっやっぱりダメか・・・・・・・・・残念・・・・・・・・・・・・・
と思ったのですが、らびやんさんがこの動画を見られて、
「惜しい感じしますね…。設定を合わせればいけそうです。」との事。
マジっすかw!!知識のある人が見るとこれはチャンス有るんですって!!
いや~私一人なら完全に諦めていたww
memory_width と memory_heightは128
panel_widthとpanel_heightは64と設定を教わり、
試してみると
おおっwマジで可能性有りそう!!!
プログラム中のsetRotationをコメントアウトしオフセットをいじっていると
なんかいけそうな感じになってきました!
memory_width 、memory_height、panel_width、panel_heightの設定部分は128x128の四角が在って、そこに64x64小窓の有る覆いを被せている状態と理解しました。
つまり全体の一部だけが見えている状態。
その128x128のどの部分に丁度表示する64×64の部分が有るかを探る必要が有ります。
これもありがたい事に、らびやんさんから怪しそうな数字教えて頂きました。
さらにその探る方法も
至れり尽くせりですm(_ _)m
要は表示画面の中心に同心円を描くプログラムを書くことによって、その円の中心が画面の中心に来るように調整すれば64x64の表示位置が分かります。
offsetはx=32 y=64で画面の中央に同心円の中心が来ました^^
これで画像表示関数を書き込んでみると
でたww!!
あれっ?でも左右反転しているな・・・・
すると再度らびやんさんからsetRotation(6)で治りますよとの事
うを~~~~~!!!!でけた!!!
らびやんさんネ申です!!!!超感謝ですm(_ _)m
SDカードからjpeg画像をそのまま表示しています!!
描画もさすがのLovyanGFX!超高速です!!
バルキリーの液晶でこのLovyanGFX使わせて貰っていたからプログラムも比較的慣れているので超ありがたい!
LovyanGFX使えるとなったら、やはりアレやってみたい!
ヤッホー!なんちゃって動画も可能ですwちなみにdelay入れて速度落している位ですww
方法は、まずはLovyanGFXをarduinoIDEに導入して下さい。
配線は
プログラムはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
#include <SD.h> #include <LovyanGFX.hpp> struct LGFX_Config { static constexpr spi_host_device_t spi_host = VSPI_HOST; static constexpr int dma_channel = 1; static constexpr int spi_sclk = 18; static constexpr int spi_mosi = 23; static constexpr int spi_miso = 19; static constexpr int spi_dlen = 8; }; #define TFCARD_CS_PIN 5 static lgfx::LGFX_SPI<LGFX_Config> lcd; static lgfx::Panel_SSD1351 panel; void setup(void) { panel.freq_write = 20000000; panel.freq_fill = 27000000; panel.freq_read = 16000000; // panel.freq_write = 10000000; // panel.freq_fill = 10000000; // panel.freq_read = 10000000; panel.spi_mode = 0; panel.spi_mode_read = 0; panel.len_dummy_read_pixel = 8; panel.spi_read = true; panel.spi_3wire = false; panel.spi_cs = 14; panel.spi_dc = 27; panel.gpio_rst = 33; // panel.gpio_bl = 32; // panel.pwm_ch_bl = 7; // panel.backlight_level = true; panel.invert = true; panel.reverse_invert = true; panel.rgb_order = false; panel.memory_width = 128; panel.memory_height = 128; panel.panel_width = 64; panel.panel_height =64; panel.offset_x =32; panel.offset_y =64; panel.rotation = 6; panel.offset_rotation = 0; lcd.setPanel(&panel); lcd.init(); lcd.fillScreen(0); SD.begin(TFCARD_CS_PIN, SPI); } void loop(void) { delay(2000); macross_op(); delay(5000); } void macross_op(){ for(int i=1;i<307;i++){ String fileName = "/"+ String(i) +".jpg"; char jpegs[fileName.length()+1]; fileName.toCharArray(jpegs, sizeof(jpegs)); lcd.drawJpgFile(SD,jpegs, 0,0); delay(50); } } |
ちなみにSDカードのルートにパラパラ動画用の画像306枚が入っています。
画像の作り方はこちらを見てください。
ちなみに、もしSDカード内のtest.jpgという画像を1枚表示させるだけのプログラムでしたら、
75行目をlcd.drawJpgFile(SD,”/test.jpg”, 0,0);
(void macross_op()関数は必要ありません)
と書き換えるだけです。
とりあえずプログラム出来たので早速Vividさんにも送信。
VividさんもLovyanGFX使用者なので速攻で試されて2人で驚愕していましたw
この速度でSDカードから描画できればもう大概の事は出来ます!
これでこの0.6inchのカラーOLEDも使い勝手が良くなりました^^
ただ、なんか今アリエクスプレスでも商品が品切れ状態みたいですね・・・・・・
予備少ないので復活してくれないかな・・・・・。
関連すると思われる記事:
- None Found
ちょっと見ない間に完了してたw
そういえばツイッターでらびあんさんと64とかなんとか相談してるなあと思っていたんですが。
しかしすごいね、Vividさんもらびあんさんも。
例えるならロングソードとハルバードだ。
我々こん棒一族とは一線を画しますなwww
でも、こん棒一族一番の力自慢 6jiro w
gyoさん こんばんは!
ふっふっふっふっ!
これで0.6OLEDも制覇しましたww
最もVividさんとらびやんさんの力ですけどねww
もうね、ツイッターでああやって教えてもらえるなんてなんて凄い世の中になったのでしょう!
一昔前なら、らびやんさんのようなすごい人達と話する方法なんてなかったですからね・・・・。
いや~ホントありがたい。
vividさんも自力でBMP解析して表示ですからね、ホント怖いですあの人もww
で、まだ内緒ですがVividさん念願のアレ出来るようにしちゃいましたwww!!!
近々ブログに上がると思いますが、私も超楽しみにしています!
コン棒族はとりあえず振り回しますからねww当たればラッキーてな具合ですww
ほぼ空振りですがwww
こんばんは!
いろいろお世話になり、ありがとうございました!!
いや~それにしても6jiroさんの開発パワーは凄いですね。しかも「らびあん」さんとのコラボ。羨ましいです。
ESP32とLovyanGFXとSDの組み合わせは最強ですよね。私が、SD->LCD->SD->LCDのチンタラパラパラ漫画動画もどきがやっとできたと思ったら、もうマッハ速度の完成ですから、凄いです。
唯一の課題は、パラパラ漫画のipeg画像の大量製作の手間位でしょうか。
かくなる上は、もう「あれ」しかないでしょうね、「あれ」!!
Vividさん こんばんは!
こちらこそ色々とお世話になりましたm(_ _)m
いやいあやVividさんの問題点の洗い出しやその解決方法とか実に理論だっていてとても勉強になりました!
今回はツイッターで、らびやんさんがたまたま見てくださって、教えて頂けたのでこのような解決となりました^^ほんとLovyanGFXて凄いですよね~。
そうなんですよ~後はその画像の用意。もう慣れてしまったのでそこまで手間では無くなりましたが・・・・・・・やっぱ「アレ」しかないですよねwww
「アレ」の公開期待しています!!!
こんにちは
コラボ企画、まだまだ発展しそう。ベクトルの違うお二人の力が相乗効果となって、もうなんでもできそうな感じですね。最強タッグ(^^)
もう完成と言ってもよいレベルで、これだけサクサク動画が表示できると色々使えそうで夢が膨らみますね。さて、何に実戦投入されるのやら?
なおさん こんばんは!
Vividさんは自己の能力で開発出来ますが、私は人頼みですww
まっ、それでも希望の状態に行きましたのでよしよしです^^
とりあえず、このなんちゃって動画出来るようになれば、バルキリーでやってた事は出来ますのでひとまずこの0.6インチOLEDの開発は終了ですね。
ですが、じつは今までの色々な物が全部前振りとなるよう事をVividさんがやっちゃいましたwwww
近々Vividさんのブログで公表されますが、それとLovyanGFX組み合わせると最強じゃん状態に!
要注目です!!