sidetech

インフラエンジニアの寄り道メモ。

ArduinoでタクトスイッチによるLEDコントロール

あやうく何もしない週末になる所でした。
とはいっても庭掃除とか剪定とかやってましたけど・・・(暑かった)。
しかしスポーツをしなくなった身体は、筋肉の悲鳴が早いっす[E:sad]
 
さて、今回は「タクトスイッチ」というのを使います。前回はLEDをやりましたね。
なので、スイッチがあればON/OFFの制御が可能というわけです。
 


タクトスイッチというのはこんな感じの足が4本生えてるボタンを押すと中で接点が接触するという仕組みのスイッチです。一般的には「プッシュスイッチ」とか言うと判りやすいかも?

 
今回はこのタクトスイッチを使いますが、このスイッチは押している間は中で接点が接触するので道通するようになるのですが、世の中このスイッチだけだと不便もあると思います。
できれば接点が接触したままにならないかな?と考えますよね。
それが、ロッカースイッチ(スナップスイッチとかも言うみたい)。


↓はスライドスイッチです。

 
とまぁ、スイッチには色々はあるのですが、今回は「タクトスイッチ」です。はい。
Arduinosw01
プログラムには、ボタンを押したらLEDを光らせて、ボタンを離したらLEDをOFFにするという簡単なものです。なので、ボタンが押されたかどうかを見守って、押された場合の処理と押されていない場合の処理を延々と繰り返しているだけです。
Arduinosw02
配線の量は少し増えましたね。プログラムも接続図も基本的にはまだ教科書の範囲です。
正直に言って・・・「ツマラナイ」[E:sad]。でもですねぇ・・・昔はこの制御するのだってPICでやるにしたって大変でした。。。そして、ここから、今回のタクトスイッチで学ばなければならないことが有ります。
スイッチから指を離すとLEDが消えてしまいますが、それは接点が離れて信号が通らなくなるからですね。そういう配線にもなっています。

 正直ここまでの過程ってArduinoを無理に使わなくても出来ますね。LEDを光らすだけならね。LEDをの点滅だってリレーという回路を使えばなんとか出来なく無いです。今までの過程でArduinoがないと出来ないのはパルス幅変調ぐらいかな?
さて、ここでちゃんとマイコンの力を借りましょう。
Arduinosw04
少しプログラムが長くなりましたが、プログラムには、LEDが点灯しているかどうかを保持する仕組みを入れました。スイッチもONだったのかOFFだったのかという情報も蓄えることにしました。
Arduinosw03
同じタクトスイッチを使っているのですが、プログラミングの少し情報を加えただけで、ボタンを押したらLEDと点灯し、点灯中だった場合はLEDがを消灯するようにしました。
スライドスイッチやロッカースイッチでもないのにLEDの点灯を保持出来るんです。

ここでプログラミングによって、ただのタクトスイッチ(プッシュスイッチ)がプログラマブルスイッチになったという事ですね。もう少しいい方を砕くと、プログラムで支配出来るスイッチになったということです。ロッカースイッチやスライドスイッチは物理的操作が絶対に必要ということです。でもタクトスイッチはマイコンによって、色々な判断・判定に使えるということですね。「長押し」とかもプログラマブルだということになります。
このような機能は身近に普通にあることなので、感動もありませんが、道理・理屈の違う挙動だという事をここで身体に叩き込む必要があります。
そしてスイッチにも色々な種類があります。センサー的な役割をするスイッチから感圧出来るものや、赤外線・ティルトスイッチ・・・沢山あるので調べてみてください。
まだまだこのLEDとスイッチの周りの勉強が続きます。私はもうはやく近代的な事をやりたくてウズウズしてショートカットしたくてしょうがない・・・電子工作に手を出した初心者なら誰しもがそうなはず。
けど我慢してステップを踏んでいきましょう。ここまでまだトータル2時間も時間を使っていないはず。読む方としては、もっと楽しい事やらんのか?!と思っているはず。
次回は光に反応するスイッチが出てきます。これが出来ると応用範囲が広がります。


(参考文献)
Arduinoをはじめよう 第3版 (Make:PROJECTS)

Arduinoをはじめよう 第3版 (Make:PROJECTS)

 

今回も上記参考文献を、ほぼ忠実にやっているだけです。配線レイアウトだけ少し変更しています。プログラムも大変判りやすいくシンプルに書かれていると思います。今の所シンプルな内容ばかりなので、ほぼそのまま公開していますが、興味を持たれた方は、この入門書をオススメしておきます。次回辺りのセンサーを使ったら独自路線にしようかと思います?