Menu
CoddyTech

内部プルアップ

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と表示されます。

challenge icon

チャレンジ

簡単

ボタンはピン 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 待つ
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

入力のすべてのレッスン

自分で練習してみよう: Arduinoプレイグラウンド