ぼくも Arduino を使ってふぃじかるこんぴゅーてぃんぐしたいです! という事で手始めに Arduino くんをボタンに応答させることを目標にやっていきましょう。ボタンを使うという事は電気が通る、通らないを検出するという事ですね。
サンプルの実行
ボタンのサンプルが用意されています。 [ファイル] - [スケッチの例] - [02.Digital] - [Button] で新しいウインドウにテンプレートが開かれます。
テンプレートのコメントが先頭に書かれています。pin 13, pin 2 を使うとあります。pin 13 はほぼオンボード LED を使うという意味ですね。あと Digital の例なので Analog pin 2 と間違えて「ん?」って思わないようにです(最初のうちは入出力の区別もつかずに間違えるんです。そういうものなんです)。
1) 5 V → {pushButton} → Digital 2
2) Digital 2 → 10k → GND
てな風に、ブレッドボードなどで接続してプッシュボタンを押すと LED が点灯するようになっています。
※10k が無いと 5 V → GND となるので死にます。正規品とか互換機の保護回路の仕組みはよくわからないですが、「保護回路がきっと…」と恐ろしい未来を想像しながら案の定失敗するのは良くない事なのでやめましょう(自戒)。
自分はこういうサンプルの簡単な事でも手を動かさないといまいち頭に入ってこないので簡単な例も飛ばさないで順番にやります。しかしボタンは接続が面倒なのでリード線でちょいちょい触れてみて LED が点灯することを確認するにとどめました。ボタンである必要も、ボタンを使わなければならない理由もないですからね。
この実験で、スイッチ(5 V - Digital 2 間)に実測 0.24 mA 流れました。
プルアップ抵抗
本題はここからです。Arduino にはプルアップ抵抗機能があるとの事です(http://mag.switch-science.com/2013/05/23/input_pullup/)。なんのことやらです。ここの解説によると、配線が少なくなるみたいです。こちらも試していきましょう。
使いたいピンを初期化というか設定する時に「INPUT_PULLUP」という定数を設定してやると先ほどのテスト回路に使った抵抗が必要なくなり、
1) 5V → {internalResistor} → Digital 2 → {pushButton} → GND
で接続できるらしいです。これはスイッチが押されていない時、導通するとのことです。プルアップ/ダウンをまだ理解していないので軽く調べておきます。
デジタル回路で浮いてるの( GND からの電位が定まってはいない状態)は非常にまずいので、0 か 1 かはっきりしてくれと。Lo か Hi かに張り付いてくれという。
最初に試したサンプルスケッチはプルダウン(Lo)の回路で、今からやろうとしている機能がその逆、プルアップ(Hi)にする回路と。
TTL論理の入力は何も接続されていない場合は自然に "high" になるため、プルダウン抵抗で "Low" にするには抵抗値を小さくする必要がある。ただし、そうするとより多くの電力を消費する。そのため、TTL回路ではプルアップ抵抗の方が好まれる。
(https://ja.wikipedia.org/wiki/プルアップ抵抗)
んー、まだ理解ができず英語の自動翻訳を読んでいる気分です。でも仰ることが確かならプルアップというのを使うと電気的にも損はしないみたいですし、Arduino においては回路が単純化できるみたいですし、一石二鳥っぽいです! やりましょう!
やってみよう
ではプルアップ回路を試してみましょう。要点は二つです。
1) スケッチの pinMode( buttonPin, INPUT ); の第二引数を INPUT_PULLUP にする
2) Digital 2 → {pushButton} → GND と配線する
難しいことは無いですね。こちらもリード線で触れるだけです。実測 0.14 mA くらいでした。確かに省電力だという事も分かって得した気分です~。
今回はスイッチを動かすのに最低限必要な事を見ていきました。
次の目標として、パソコンに入力を返したり応答させてみたりしたいですね。
0コメント