IchigoJamで遊ぶ その3 信号機を作る

(投稿日:2016-03-16)

信号機っぽいものを作ろう

前回は1個のLEDを制御したので、今度は三つくらい制御してみましょう。
せっかくなので、青(緑)・黄色(橙)・赤の3色のLEDを用意して、信号機もどきにチャレンジ。

led2
こんな感じで、前回同様にOUT1には緑色のLEDを取り付け、加えてOUT2に黄色のLED、OUT3に赤色のLEDを接続します。

前回は「OUT 1」というコマンドを使っていましたが、実はこのOUTコマンドはパラメータを二つ指定することができて、以下のように使えます。

※オンにするというのは正確には電圧をHighにする事ですが、今のところは単純にオンとオフとしておきます。

OUT 2,1 にすると黄色のLEDが光り、OUT 3,1にすると赤色のLEDが光るというわけです。
簡単ですねぇ。

で、こんなプログラムで、緑が6秒、黄色が1.5秒、赤色が6秒というような信号機っぽいものを作ってみました。

見た目はちょっとアレですけど、信号機っぽい動作になってるハズ。

プログラムが分かりづらい!

しかし、このプログラムはちゃんと動きはしますが、出力先の指定とオンとオフが入り乱れていてややこしいし、なんだか無駄に長いです。

プログラムを一端途中で止めてから再度実行すると、初期化してないので青と赤が同時に光ったりする不具合もあります。

なので、ここは複数の出力を一度にオンとオフできる方法を使ってみます。
といっても、何のことは無い(前回も使っていた) OUTコマンドをパラメータ一つで使うだけなんですけどね。

OUTコマンドをパラメータ一つのみで使うと、そのパラメータを2進数にしたときの各ビットに対応したOUT端子がオン・オフされます。
たとえば、パラメータが「6」の場合、2進数だと「00000110」なので、OUT2とOUT3がオンで他はオフとなるわけです。

というわけで、プログラムをこういう風に書き換えました。

50行目の「OUT 4」 が、OUT4端子をオンにするものと思いがちですけど、実際は「OUT3端子のみオン」にしています。

個人的には分かりやすくなったと思ってますが、2進数を知らないと余計に分かりにくくなったかも?
ただ、プログラムは短くなったので良しとします・・・してください。

おまけ・歩行者用信号機

ほとんど同じようなプログラムですけど、歩行者用信号機も作ってみました。

動き的にはこちらの方が面白いかも(笑)

投稿者: