内部プルアップ
CoddyのArduinoジャーニー「入力」セクションの一部。レッスン 3/22。
「Read a Button」以降、INPUT_PULLUPを使ってきました。これはボード内部の20k~50kオームの抵抗を、ピンから5Vにつなぐようにオンにします。前のレッスンのプルダウンを逆向きにしたもので、追加部品は不要です。ボタンはピンをGNDにつなぐだけです。
注意点は、ロジックが逆になることです。押されていないときはHIGH、押されているときはLOWと読み取られるため、スケッチ内のあちこちにある== LOWを逆にしてしまいがちです。digitalRead(2) == LOWのような比較結果は、それ自体がtrueまたはfalseであり、boolはtrueまたはfalseを保持する変数です。意味が分かる名前を付けて保存しましょう。
bool pressed = digitalRead(2) == LOW;
if (pressed) {
// ボタンが押されている
}これ以降、コードを自然な向きで読めるようになります。boolを出力すると、trueは1、falseは0と表示されます。
チャレンジ
簡単ボタンはピン 2 と GND を接続し、LED はピン 13 に接続されています。
- ピン 2 を
INPUT_PULLUPに設定する digitalRead(buttonPin) == LOWをpressedという名前のboolに格納するpressedを出力し、その値がtrueの間 LED を点灯させ、その後 100 ms 待つ
ボタンを押している間は 1、離している間は 0 になることを Check で確認します。Run を押してボタンを押したままにし、その後 Check を押してください。
自分で試してみよう
const int buttonPin = 2;
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
// ボタンのピンのプルアップを有効にする
}
void loop() {
// bool pressed = ...
// その値を出力し、true の間は LED を点灯させ、100 ms 待つ
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
入力のすべてのレッスン
自分で練習してみよう: Arduinoプレイグラウンド