💈
プルアップ・プルダウン抵抗の繋ぎ方
はじめに
スイッチは OFF のとき 0 にならない。OFF のときに 0 にするにはプルダウン抵抗を添える必要がある。一方で OFF のとき 1 にするプルアップ抵抗もある。
共通手順
- PIN を INPUT にする
- PIN の入力が不規則になっているのを確認する
プルダウン抵抗を使う場合
- Vdd → スイッチ → PIN の順に繋ぐ
- PIN の入力が激しく不規則になるのを確認する
- スイッチ ON で常時 1 になるのを確認する
- スイッチ後に分岐して → R → GND の順に繋ぐ
- 不規則が静まって常時 0 になったのを確認する
プルアップ抵抗を使う場合
- Vdd → R → PIN の順に繋ぐ
- 不規則が静まって常時 1 になるのを確認する
- R後に分岐して → スイッチ → GND の順に繋ぐ
- スイッチ ON で 0 になるのを確認する
内蔵プルアップ抵抗を使う場合
- PIN を INPUT_PULLUP にする
- 不規則が静まって常時 1 になるのを確認する
- GND → スイッチ → PIN の順に繋ぐ
- スイッチ ON で 0 になるのを確認する
Arduino はプルアップ抵抗だけ内蔵している。スイッチ ON で GND == PIN
になる。スイッチ に Vdd は来ない。
簡易まとめ
方法 | 配線1 | 配線2 | SW OFF | SW ON |
---|---|---|---|---|
プルダウン | Vdd → SW → PIN | SW後分岐 → R → GND | 0 | 1 |
プルアップ | Vdd → R → PIN | R後分岐 → SW → GND | 1 | 0 |
プルアップ(内蔵) | GND → SW → PIN | 1 | 0 |
確認用コード
void setup() {
pinMode(2, INPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, digitalRead(2));
delay(1000 / 60);
}
delay があると不規則な入力を見分けやすくなる。入力を13番の内部LEDに反映すると把握しやすい。
抵抗値の決め方
Arduino の入門書では 1KΩ とだけ書かれてあってそれがどこから来た値なのかわからなかった。ググってみると 10KΩ を使っている人もいた。
参照
Discussion