Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC32MM0064GPL028 + SSD1306(GM009605) で表示させるアニメーションの準備

PIC32MM0064GPL028 + SSD1306(GM009605) でアニメーションを表示させて遊んでいる。
PIC32MM0064GPL028 + SSD1306(GM009605)
Blenderで用意したたとえばこんなアニメーションを表示させたい。

基本はパラパラ漫画の要領なので以下の手順だ。
1.画像はBlenderでレンダリングする。
2.XnViewでリサイズする。
3.ImageConverter (Mono)でCのデータ・ファイルに変換する。
ちなみに上の動画は、AviUtlに読み込んで動画にしたものだ。
LCDではピクセル数が格段に少ないので、もっとギザギザな残念な動画にはなる。
それでも絵が動くと妙に楽しい。
楽しいが、LCD用の画像の準備となると上の3の段階が1枚ずつ手作業なので非常に煩雑だ。
この例では30枚なので30回同じことの繰り返しは結構面倒くさい。
2の手順のときに2値化もして、ついでにBMPファイルに変換してしまったらどうだろう。
そのままバイナリ・データを読みだしてCのデータ・ファイルに変換できるんじゃないの?
と考えた。
この段階で分かっていて(思い込んでて)考慮したことは以下の2点。
1.ヘッダの部分だけ読み飛ばせばそのままHEXとして出力すればいい。
2.画像は上下の順が逆になってファイルに書かれている。
VB6でコマンド・ライン用の実行ファイルを作り、ファイル名に合わせてバッチ・ファイルを書いて実行した。


3に書いたサイトでちまちまやると結構の時間と手間だが、これならものの数秒で30枚の処理が済む。

MPLABX側でのファイル名に合わせてあるので、そのままファイルを上書きしてビルドして実行するとこうなる。

データの配列が何か間違ってるんだな。
で、思いつくところでLCDの設定の以下を変更した。

すると今度はこうなる。

明らかに90°回転してしまっている。
なので、XnViewで加工する際に90°回転も加えてみる。
するとこうなる。

これでImageConverter (Mono)で変換した時の結果と全く同じアニメーション用のデータが手軽に短時間で用意できたことになる。
現状の分かる範囲での最速の設定にするために、i2c_master.hで以下

を書き換えるとこんな感じ。

XnViewは処理をスクリプトに書いておける

ので実質以下の手順で済む。
1.Blenderで動画用の画像をレンダリングする。
2.XnViewで画像を2値化、リサイズ、回転する。
3.VB6のプログラムでC用のデータ・ファイル化する。
4.MPLABXのプロジェクト・フォルダにコピーする。

PIC32MM0064GPL028 関連記事一覧

このエントリーをはてなブックマークに追加

Posted under: I2C, Memo, PIC32MM0064GPL028, 液晶


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.