Pro Micro で プルダウン抵抗を理解する
キーボードを自作するための勉強中です。
Pro Micro クローンを使った簡単な回路を組むことで、プルダウン抵抗が何なのか、どうして必要なのかを勉強しました。
プルダウン抵抗を使った回路を作る
スイッチが押されているか、押されていないのかを Pro Micro が読み取り、スイッチが押されていれば LED を光らせるというものを作ってみます。
アイデア
A0 ピンを入力ピンとして設定します。入力ピンは入力されている電圧が 5V なら HIGH 、 0V なら LOW だと判断します。
スイッチが押されている間は入力ピンが 5V になり、押されていない間は 0V となるような回路を組めばよさそうです。
Pro Micro へプログラムの書き込み
Pro Micro へプログラムを書き込みます。環境構築は Pro Micro & Fio V3 Hookup Guide - learn.sparkfun.com を参考に行ってください。
ファイル > 新規ファイル
をクリックして新規ファイルを作成します。
プログラムは以下のものをコピペしてください。
int RXLED = 17;
int inputPin = 18;
void setup()
{
pinMode(RXLED, OUTPUT);
pinMode(inputPin, INPUT);
}
void loop()
{
TXLED0;
if ( digitalRead( inputPin ) == HIGH ){
digitalWrite(RXLED, LOW);
} else {
digitalWrite(RXLED, HIGH);
}
}
Arduino 上でのピン番号はここの通りとなっています。
これを Pro Micro へ書き込んでおきます。
回路の作成
まず VCC から スイッチへつなぎ、スイッチからA0ピンへつなぎます。
こうすると、スイッチが押されている間は VCC と A0ピンがつながり、A0ピンが 5V になり、 HIGH になります。
しかし、スイッチが押されていない間は A0ピンはどこともつながっていません。
このような状態を回路がオープンであると言います。
このオープンな状態は、静電気などの影響を受けるためどんな状態であるかが定まりません。
つまり、スイッチが押されていない間は A0ピンが LOW になるとは限らないような状態になっています。
オープンを解決
そこで、スイッチが押されていない間は A0ピンが GND とつながるようにします。
スイッチと A0ピンの間から GND へ線をつなぎます。
これでスイッチが押されていないとき、A0ピンと GND がつながり、A0ピンが 0V になり、LOW になることが保証されます。
しかし今度は、スイッチが押されているとき、A0ピンは VCC と GND のどちらにもつながっている状態になってしまいます。
これでは A0ピンが 5V となるか 0V となるかはっきりしません。
誘導する
そこで、電流は抵抗の低い方に流れるという特徴を利用して回路を修正します。
スイッチと GND の間に抵抗を挟みます。今回私は 4.7kΩ の抵抗を使用しました。
これにより、スイッチが押されている間、VCC からの電流が A0ピンへ流れ込むように誘導することができます。
この抵抗をプルダウン抵抗といいます。