🚨
LEDが暗く感じるときの調べ方
なんか暗い
いつもこんなんだっけ? ちょっと暗いような気もする。
コードを確認する
void setup() {
}
void loop() {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
ピンには INPUT と OUTPUT のモードがあり、どちらかが初期値になっている。digitalWrite でピンを HIGH にしたことで LED が点灯したので、モード初期値は OUTPUT だったとわかる。
とくに問題はなさそうなので、回路の方を測定してみる。
測定方法
テスターの棒を両端に当てればいいと考えていたのは完全に誤りだった。正しくは対象によって当て方も電源の必要性も異なる。
対象 | 棒の当て方 | 電源 | |
---|---|---|---|
電圧 | 並列 | 必要 | |
抵抗 | 両端 | 切る | 電源入りだと短絡して LED が死ぬ |
電流 | 直列 | 必要 | つまり回路の一部とする |
測定結果
対象 | 想定 | 実際 |
---|---|---|
電流 | 13.64mA | 0.098mA |
LED にかかる電圧 | ? | 1.69V |
抵抗にかかる電圧 | ? | 0.02V |
全体の電圧 | ? | 1.71V |
抵抗値 | 220Ω | 217Ω |
- 電流の想定値 = (電源5V - LED 2V) / 220Ω = 13.64mA
- 本当に全体の電圧は各要素の和になってた 1.69 + 0.02 = 1.71
- 抵抗は間違えてなかった
- 抵抗値はわりと誤差がある
LED に来ている電流が少ないのが気になる。これは LED の足が逆なのか?
LED の足を逆にした結果
光らなくなっただけだった。
結局直感で直す
上の手順も踏まえると直感というよりは消去法でもあるのだけどこれで直った。
void setup() {
pinMode(2, OUTPUT); // ← 追加
pinMode(3, OUTPUT); // ← 追加
}
void loop() {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
本来の明るさ
試しに使うピンを明示的に OUTPUT に設定してみると眩しいほどの通常の明るさになった。どうやら初期値は INPUT だったようだ。
でも LED が点灯していたのはなぜか? これは INPUT だと LED は点灯しないという勝手な思い込みだった。INPUT でも少量の電流は流れている。LED は少量の電流でも結構光るのである。
モード別の計測値を知っておきたい
対象 | 想定 | INPUT | OUTPUT |
---|---|---|---|
電流 | 13.64mA | 0.098mA | 12.4mA |
LED にかかる電圧 | ? | 1.69V | 1.9V |
抵抗にかかる電圧 | ? | 0.02V | 2.7V |
全体の電圧 | ? | 1.71V | 4.6V |
- OUTPUT 時の電流は想定値に近い
- 全体の電圧は OUTPUT でもやっぱり各要素の和になっている
Discussion