ELEGOO Arduino用UNO R3スターターキット レベルアップ チュートリアル付
前回の続き
引き続きチュートリアルに沿って電子工作入門していく
デジタル入力
プッシュスイッチ
LED をオン/オフするためにデジタル入力付きのプッシュボタンを使用する方法 を学習します。
使用する機器
- (1) x Elegoo Uno R3
- (1) x 830 Tie-points Breadboard
- (1) x 5mm red LED
- (1) x 220 ohm resistor
- (2) x push switches
- (7) x M-M wires (Male to Male jumper wires)
push switches
ボタンを押すかレバーを回すと、2 つの接点が電気的に接続されます。
これまた左右上下が間違えやすいので注意
※LEDの正負ピンに注意
配線がもんだいなければ LED プログラムのままなので Arduino を繋いだ時点で LED が点灯する
チュートリアル用のサンプルプログラムを開きデプロイする
デプロイするとLEDが消え、左ボタンを押すと LED が点灯し、右ボタンを押すと消灯します。
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
}
void loop()
{
if (digitalRead(buttonApin) == LOW)
{
digitalWrite(ledPin, HIGH);
}
if (digitalRead(buttonBpin) == LOW)
{
digitalWrite(ledPin, LOW);
}
}
スケッチの最初の部分は、使用される 3 つのピンの 3 つの変数を定義します。
‘ledPin’は出力ピンで、‘buttonApin’はブレッドボードの上部に近いスイッチを指し、 ‘buttonBpin’は他のスイッチを指します。
INPUT_PULLUP のピン・モードは、ピンを入力として使用することを意味しますが、他のものが入力に接続されていない場合は、「プルアップ」して HIGH にする必要があります。
言い換えれば、入力のデフォルト値は、ボタンを押す動作によって LOW に引かれない限り、HIGH です。
このため、スイッチは GND に接続されています。
スイッチを押すと、入力ピンが GND に接続されるため、ハイになりません。
入力が通常 HIGH で、ボタンを押したときに入力が LOW になるので、ロジックは少し上下逆です。
これを’loop’関数で扱います。
GND でマイナス電力は通しつつ、プログラム側でプラス電力のON/OFFを制御する仕組み
デフォルトでデジタル入力は HIGH なため、左のボタンを押す=LOWとなり
loop内で LEDに電力を通すピンをHIGHにして電気を通す
右のボタンが押されたら=LOWとなりLEDピンをLOWにして電気を止める
スイッチと聞くと ON/OFF な気がしてしまうけど、デフォルトON でスイッチ自体は押すことで OFF しか発しないってイメージかな
いろんな機器を繋いでいても結局制御しているのは Arduino 側で Arduino 側のピンしか制御できない
スイッチに対して制御しているのではなく、スイッチからの入力値を元に Arduino 側で制御しているって理解してやっとわかった
スイッチからのデジタル入力がどうも見えにくいので中々理解しづらい
そもそも電子回路におけるデジタル回路とアナログ回路とは何なのか
なんとなくだけど、今回のチュートリアルでスイッチを利用する場合、 Arduino のデジタル回路側ピンを使った理由がわかる
だんだん ん・・・・ん?という疑問点が増えてきたけど
細かいことは一旦置いておいて触ることを優先して学習していく
とりあえず今回はここまで
多分次回に続く