スイッチで鳴る踏切をつくる
Mbed LPC1114を使ったマイコンを学習できるキットを販売しています。LPC1114はブレッドボードに刺さる便利なマイコンで、実験に最適です。
このキットのMbedプログラム講座にある「踏み切り」のプログラムをもう少し音をリアルにしてみました。
こちらよりインポートしてコンパイルしてください。2つの音を交互に出して和音っぽくしています。また、「カーン」の「ーン」の部分は音がだんだん小さくなるのですが、そのようにスピーカーをONする長さを徐々に短くして、音をだんだん小さくしています。
マイコンの配線の方法は、過去のこの記事と同じになっています。
スイッチを押すと、LEDが交互に光って踏切がなります。
センサーを使って踏切を鳴らす
スイッチで踏切が鳴るようになったので、次は、センサーを使って電車に反応して踏切が鳴るように改良したいと思います。
センサーには赤外線接近センサモジュールを使います。
このセンサーは、センサーの正面に何が物体があると、信号が出力(OFF)されます。
このモジュールにメスのジャンパーワイヤーを配線します。今回は、紫、青、緑を使いました。この色がなかったら、別の色でも構いません。
青:青い電源ラインへ(GND)
緑:a2(これまでスイッチがつながっていたピンへ)
このセンサには、感度調節のボリュームがあります。反応したい物をセンサの正面に置いて、右下のLEDが光るように、ボリュームで感度を調節してください。結構調節が微妙で、難しいかもしれません。
先ほどのスイッチの時は、ONになった時に踏切が鳴るようなプログラムだったのですが、このセンサモジュールは、物体を発見するとOFFになります。そこで、プログラムを改良します。
具体的には先ほどのプログラムの31行目の
//スイッチが押されている間は踏切が鳴る while( sw == 1 )
のwhile()の中の、sw == 1をsw == 0に変えるだけです。これで、信号が0(OFF)になったら踏切がなるプログラムが開始されるようになります。
さらに、センサが反応が終わっても(電車が過ぎ去っても)、しばらく踏切が鳴り続けるように改良してたいと思います。
改良したプログラムは以下よりインポートできます。
センサーが反応すると踏切が鳴ります。
const int humikiriMax = 3; //スイッチが反応してから踏切が終わるまでの長さ ... //センサが反応したらカウンターに踏切が終わるまでの長さを入れる if( sw == 0 ) count = humikiriMax;
34〜36行目。センサが反応して0になったら、countという変数にhumikiriMaxという値を入れます。countは、カーンカーンと2回鳴る毎に、1つ減っていき、0になるまで踏切がなり続けます。
もし、センサが反応しなくなってから、もっと長く踏切が長くなっていて欲しい場合には、humikiriMaxの値を大きな値に設定し、逆に短くしたければ、小さな値に変更します。
踏切を作る
白いボール紙に踏み切りの絵を描きます。
光るところを目打ちを使って10mmくらいの穴を開けます。てっぺんにスピーカー用の穴も開けます。
穴に後ろからLEDを通します。
踏切の完成です。
電池で動作させる
これまではUSBで動作していましたが、遊ぶ時には電池の方が便利です。そこで、電池で動くように改良したいと思います。
mbedねこちゃん(書き込み機)を取り外します。
mbedねこちゃん(書き込み機)とつながっているジャンパワイヤーを外します。
電池ボックスを差し込みます。電池ボックスのマイナスのピンを青い電源ラインへ、プラスのピンを赤い電源ラインへ差し込みます。
ブスッと電池ボックスを差し込みます。
ブレッドボードの電源ラインは、ブレッドボードの左右に2本ずつあります。電池ボックスと反対の電源ラインにも電気が行くように、互いの電源ラインどうしをジャンパーワイヤーで接続します。
左の青い電源ラインと、右の青い電源ラインを接続します
これで、電池で動作するようになりました。
プラレール用の踏切の完成です。
プラレールを買ってきました
オフハウスに行ってプラレールのレールを買ってきました。まとめて330円でした。電車は安くなかったのでダイソーで買いました。これが実は失敗でした。なんと、プラレールとダイソーの電車は線路と車輪の幅が違うんです。
ガタガタしながら、とりあえずは走ります。
電車の近くにセンサーを設置します。
こんな感じに、電車がやってくると踏切が鳴るようになります。プラレールとダイソーの電車は線路と車輪の幅が違うので、ガタガタしながら走り最後には脱線してしまいます...
センサーが太陽光に弱いので、あまり太陽のある明るい部屋ではうまく反応しないかもしれません。カーテンなどして光を遮るといいでしょう。
mbedマイコンでプラレールの踏切ができました。同じ仕組みで鉄道用の信号なんかもできそうですね。
コメント