I Shall Foot It! ~あるいてく~

銀河系を巻き込んだ親子喧嘩に加担した密輸業者の宇宙船の模型を作ってます

デアゴ ミレニアムファルコン作製記 Episode 023 [コクピット点滅回路ほぼ完成]

      2016/06/19

先日、コクピットのドアの点滅の様子をPICを使って実際にプログラミングしてみて、試行錯誤の末なんとか動かすことができました。

最初うまく動かなかったのは、先日の推測では消費電流が大きすぎたと書きましたが、もう一つ、タイマーの周波数が高すぎたことも原因でした。

 

PIC16F886で24個のLEDを制御

最初のプログラムでは、訳も分からず参考にしたサイトの例をそのまま使って125,000,000Hz、すなわち125MHzで動作させていましたが、修正版では8MHzとしました。

この違いは、消費電流の差と安定動作に直接関わってくるので、少数のLEDしか制御できなかったこと、動作が不安定になった事の説明がつきます。

先日は12個プラスα個しか安定動作しませんでしたが、周波数を下げ、適宜抵抗を加える事で24個すべてのLEDを点灯、制御させることができました。

発熱もほとんど無く、安定動作しています。

LEDの割り振り

これらのLEDをどう配分するか、点滅パターンをどうするか考えてみました。ドアもそうですが、どうでもよさげなところにパワーを費やす悪いクセがまた。。

IMG_6394

 

 

ナビシステムはちょっと凝りたい

照明の動作をみていると、それぞれがランダムに発光しておらず、いくつかのグループに分かれて定期的に点滅している部分がほとんどですが、向かって左上部にあるナビシステムは円形に取り巻くように赤、オレンジ(この色は他のシーンにより黄色や電球色に見えてどうしようか悩んでます。)、青の常時点滅、中央のレーダー部分はかなり高速に点滅しており、他のパーツとは独立させたいと考えました。

2016-02-28 06.40.14

大部分のインジゲータは、常灯している部分と点滅している部分とに分け、背面から照射するLEDパネルと蛍光灯(これで通じると思うけど)は常時点灯させます。

中央コンソールは、あまり派手な点滅はしていないので常時点灯とし、中央コンソール側のナビ用に1つ確保しましたが、もしかしたら白LED1個にするかもしれません。

 

ガラクタらしく、エンストもさせてみた

ホスからの脱出時に一瞬エンスト後、ハンが壁ドンして再起動する様子も再現してみました。

とまった時間や、一瞬点灯するタイミング、再起動までの時間の微調整はこれからです。

 

点滅の様子(動画)

動画を撮りました。iMovieで字幕を複数入れる方法でしばし悩みました。「分割」しないとダメなのね。。

LED配分表(暫定)

24個あるLEDは次の様に割り振りました。いくつか検討か所もあり、この先変更するかも。自分用メモです。

PORT番号 個数 用途 初期 エンスト 無限ループ 備考
RA0~RA2 3 ドア#1 消灯 消灯 点滅
RA3~RA5 3 ドア#2 消灯 消灯 点滅
RC0~RC2 3 ドア#3 消灯 消灯 点滅
RC3~RC5 3 ドア#4 消灯 消灯 点滅
RA6 1 ナビ点滅 消灯 消灯 ランダムに高速点滅
RA7 1 ナビ常時点灯(赤) 消灯 消灯 常時点灯
RC6 1 ナビ常時点灯(黄) 消灯 消灯 常時点灯
RC7 1 ナビ常套点灯(青) 消灯 消灯 常時点灯 現在はLEDパネルを接続
RB0 1 LEDパネル(デアゴ純正) 点灯 フラッシュ 常時点灯 現在はLED赤を接続中
RB1 1 背面パネル(赤)パターンA 点灯 フラッシュ 常時点灯
RB2 1 背面パネル(赤)パターンB 点灯 フラッシュ ランダムにゆっくり点滅
RB3 1 背面パネル(オレンジ)パターンA 点灯 フラッシュ ランダムにゆっくり点滅
RB4 1 背面パネル(オレンジ)パターンB 点灯 フラッシュ ランダムにゆっくり点灯
RB5 1 中央コンソール(LED白) 消灯 消灯 常時点灯
RB6 1 中央コンソールナビ(青) 消灯 消灯 ゆらぎ点灯 フルカラーLED検討
RB7 1 隔壁(チップLED白) 点灯 フラッシュ 常時点灯 今はエンスト時消灯している

 

PICプログラムについて

ちょっとだけ改修して、今回の点滅制御を加えたプログラムです。

改修点

前回、有償版じゃないと配列が使えないということが分かり、やっつけでベタ書きしてた部分を関数化しました。

配列が使えないので、結局はパラメータ全て書いていてちょっとカッコ悪いんですが、main処理はシンプルに

なりました。

 

ランダム点灯について

乱数を発生させて、ある数値で割り算した余剰により制御を変える、すごく原始的な作りです。

6jiroさんのサイトで、なんだか難しい式を見かけましたがチンプンカンプンだったのと、この方法の方がアナログ感が出てるみたいなので(表現が乏しくすみません)、あまり深く考えないことにしました。なお、乱数といっても再起動後に発生するパターンは同じなので、毎回同じランダム(これも表現が乏しい。。)数値となります。

無限ループに入ると、ドアの点滅パターンを2秒で20パターン(100msec/パターン)で制御しているため、この中に他の制御を詰め込んでいます。

ナビの高速点滅は行う、行わないの判断を乱数から得た値で行い、行う場合はフラグを立てて点滅。。という処理を繰り返しています。

その他の点滅は、1秒ごとに点灯・消灯どちらにするかを乱数の結果で判断することで実現しています。

 

ソースコード

ソースコード置いときます。上でのべた様にちょっと恥ずかしい感じです。可読性向上と、時間の微調整はこれからです。

で、一応お約束。

  • プログラムは自由に使用していただいて結構ですが、生じた不具合、損害は関知しません。自己責任でお願いします。
  • 実際に回路を作製する際は、チャタリング防止やプルアップORプルダウン、念のためパスコンを入れる必要があると思います。
  • 供給した電源はDC 5V、1A(iPhoneの充電器の仕様と同じ)です。電源については機会があればブログを作製します。
 

 

もっと他にやることが。。

作業が一向に進みませんが、(誰も心配してないけど)安心してください。ちょっと手をつけてます!(画像ちっさ!)

IMG_6389

これらのブログは後で~。

 

  関連記事

関連記事

 - デアゴ ミレニアムファルコン, 電飾 , ,