VF-1 VALKYRIE バルキリー06 コンソールのプログラム

ちょっと籠ってましたwバルキリーのコンソールのプログラムは一段落としました。

とりあえずこんな感じにしました^^2分半位あります^^;

最後はファミコンの安物ゲームのようになっていますがw

実際の航空機やバルキリーとしては色々おかしなところが有りますがその辺はご勘弁を^^;

Vividさんアイデアの武器画面のミサイル飛んでいく~画面、
taraさんアイデアの「愛おぼ」のミサイルでの迎撃画面
てつのさんアイデアの画面がグリングリン(グリングリンは無理でしたが^^;)動く画面
これらを足していくと・・・・・なんかストーリー出来そう!
てなことで、それっぽく仕上げてみましたw
アイデアありがとうございました!!

で、プログラムですが久々の2000行越えw疲れた~ww
これ、他の電飾のプログラム含んでいませんからね^^;この先周囲の電飾との同期とか考えていかないといけないと思うと今からゲンナリ・・・・。と思ったのですが、今見るとメモリの90%を使っているのが判明w
このarduinoはOLED専門に徹してもらってメインに別のAVRやArduinoでコントロールした方がよさそうです^^;

今回のOLEDのプログラムはいつものプログラムとは違ってアニメを作っているようで結構楽しかったです。

まずは色々な画面表示のラフから

今見るとここに載っているものほぼ没ネタだなw実は上の動画の画面以外にもそれぞれのシーン用に何個か別のパターンの物も作ったのですが、とにかく画面表示のドット数が少ないので多くの情報を書き込めないため没ネタも大量に^^。

で、なんとなく決定したら娘からもらった方眼紙に書き込み

左上の物が離陸画面の決定画面です。
この方眼紙のマス目を数えながらプログラムにして

一つ書いては画面表示して確認。これを永遠と繰り返していきましたw
とにかく線が多くなると表示ドット数60×32では画面が真っ白になって表現しきれないものが多くてほんと困りました^^;
それでもプログラム的には静止画面はまだいいのですが、問題は動いている画面ですね^^;

実は最後のドッグファイト様の部分で無茶時間かかりましたw
このシーンでの基本となる直線を傾斜させていく関数に手間取りました^^;

cosの場合同じ値でもx軸に対象に+Θと-Θの場合がありますし、sinの場合も同じ値でy軸を対象にΘと180-Θの場合もあるし頭が大混乱ww

こんなのほかの人なら簡単に作っちゃうんだろうな~と思いながらもなんとか関数完成^^;

これで間違いないはずとプログラムを動かしてみると・・・・・

あれあれあれ??何か途中から変な表示になる・・・・・・なぜなんだろう???

で、ここで回転座標の関数製作中とツイッターで呟いら、gyoさんから「完成したころにライブラリーが見つかるかもw」と、パイロットpapaさんから「昔行列の変換式使った気が」との内容のコメントを頂き、もしかして?と思いネットを調べると簡単に回転座標の変換式発見www

それも私の式よりかなり簡単で美しいw 関数に組み込むと

ええっw無駄な変数も少なくて美しい!

うっかりネットのチェックもせずに地道にやり過ぎたw

ただ、この関数にしても先ほどの途中から変な状態になるのは変わらず・・・・

で、試しに何本か一緒にそれぞれの中心で回転させてみました。

左の上の線のみが変な動きで後の2本はちゃんと回っている感じです。

そうなんです!要は直線の端の座標がマイナス領域に入ると表示がおかしくなるんですね。画面からプラス側に飛び出ている分は問題ないみたいです。

で、このマイナス領域に入った場合用にラインの両端の座標から1次方程式を求めてマイナス数字を出さないようにしようと思ったのですが、関数に組み込んでも効果なし・・・もう知らんwマイナスに行かないように動かすww

てなことでドッグファイト時の動きが少しおとなしめですw

とりあえず現段階ではここまでで^^;
あとはコクピット周囲の電飾との連携等を考えて少し修正するかもです。

 

最後にプログラム載せておきます。現段階では最初の動画のように画像を流すだけのものです。
画面がスクロールします。最後の行は2118行です。
もし使用される場合はarduinoにU8glibのライブラリーを導入して下さい。
難しい部分はありませんwただただU8glibのコマンドの羅列ですw