
micro:bitのススメ(21)〜工作に使える入力(2)
前回、入力を拡張するのに、最初はスイッチから、と言う話をしました。
一つ補足しておくと、プログラミング的には「割り込み」の概念を教えておくといいでしょう。「割り込み」とはメインループで何かやっている(もしくは何もしてない)間に、ボタンを押すとそっちを優先して始める動作のことです。
テレビを見ている最中に玄関のチャイムが鳴ったら、インターホンのところに行って画面を見ながら話す、ような動作ですね。他にどんな「割り込み動作」があるでしょう?プログラムを動かす時身近なことで似たようなことがないかを探して議論すると面白いと思います。
さて今回の本題に戻ります。
外部スイッチを接続できるようになれば、高度なデジタル機器を繋ぐのはその延長です。もうできますね。
今回はアナログセンサーを使うことを考えます。最初から内蔵されているものに「光センサー(LED)、温度、地磁気、加速度」があるので、これらが何を検知するのか、検知したらどう扱えばいいのか、をまずは考えます。これらで不足するセンサーを足していくわけです。
あまり書籍では触れられていませんが、一番安く、簡単に試すとすれば、可変抵抗(ボリュームと言います)をつないでみたらどうでしょう?
つまみを回して抵抗が変わり、その結果をLEDの光らせ方(個数や絵を変化させる)やブザーの周波数を変えるとかできるようになれば、高度な専用センサー類を繋ぐのはこの応用ですぐできるようになります。
人が動かすボリュームじゃ物足りない、と言うのであれば、明るさで抵抗が変わるCdSセルをボリュームの代わりに繋げば良いでしょう。
ここまでで
(1) 音が出るようになった
(2) 外部スイッチのON/OFF状態を取り込めるようになった
(3) 外部のアナログ値を取り込めるようになった
あとはこれらを組み合わせればある程度の工作はできるようになったはずです。
まだ機構、可動部がないですね。走ったり動いたりする動作です。これらは次回に。
今回はここまで
いいなと思ったら応援しよう!
