マイコンを初めて学習する時にはまず最初にエルチカを行うのが定番となっていますが、そのLEDの点滅回路が今回のテーマです。 1.LEDの点滅回路を組み込んだUFOのプラモデルYouTubeでUFOのプラモデルにLEDの点滅回路を組込んでいる動画を見つけました。点滅の仕方に一工夫があってちょっと興味をそそられました。 この点滅回路ですが、YouTubeの他の動画を幾つか見てみると、Light Kit なる製品があるようですが、どこで購入出来るのかよく判りません。そこで似たような物をPICで作ってみることにしました。 まずは、UFOのプラモデルです。YouTubeの作例でも使われていたPEGASUSの「AREA 51 UFO」というプラモデルを入手しました。いかにもUFOという感じのプラモです。 とりあえず指示通りに組立ててシルバーで塗装しました。
2.PICで点滅回路を作る 8ピンのPIC12F629(675)を使います。2ピンは電源とグランドですからLEDの点滅に使えるのは残りの6ピンですが、GP3は入力専用ですので、実際は5ピンということになります。 5ピンを使って10個のLEDを点滅させることにします。GP3は点滅速度を切り替えるスィッチの入力に使います。LEDは5mmの白色を8個、3mmの赤と青、各1個の計10個です。 電源は、単4または単5の乾電池2本を使って3Vとしました。単3は大きいのでUFOの中に組み込むのが困難です。電池容量はあまり必要の無い回路ですので単5でも十分です。 PIC12F629(675)は、2.0Vあれば動作しますし、LEDの点滅だけの回路ですから電源の安定化は必要ありません。電池を直結します。 GPIOの出力が1でも0でもLEDが点滅するような回路にします。例えば、GP0の出力が0の時はD1が、1の時はD2が点灯します。5ピンで10個のLEDを制御できます。 LEDを単純にオンオフするだけでは、UFOの窓から怪しげな光が発しているようには見えません。PWMで明暗を制御することにします。 なお、使用するLEDは電池電圧が低下してもすぐに暗くならないように高輝度タイプのものを使いました。ユニバーサル基板で作成しました。
PICのプログラムはMPASMで作りました。この程度のものならアセンブラでも簡単と言いたい所ですが結構大変でした。 PWMによる明暗制御を行うのは白色LEDだけです。青と赤のLEDは単純なオン・オフです。PWMはサイン波で行い、じわっと点灯したり、じわっと消灯するような感じにしました。 また、この点滅速度はボタンスィッチで変更出来るようにしています。ただし点滅速度の変更をするのはPWMの白色LEDだけです。青と赤は一定の間隔で点滅させておきます。 PWMは速度変更も含めソフトウエアのループ処理で行い、青と赤のLEDはタイマー割込みで行うようにしました。サイン波の計算はテーブル引きで行っています。
こちらが出来上がったプログラム(main.asm)です。 |