質問の概要
Arduino の出力もしくは入力ピン間で短絡してよい組み合わせと短絡してはいけない組み合わせにはどのようなものがあるのでしょうか?
例えば、プルアップで High 状態になっている入力ピンとLow に出力したピンが短絡しても問題は無いのでしょうか?
後述する簡単な回路ではこの例は問題がなさそうでしたが、原理が分からなくて困惑しています。
詳細
入力ピンのプルアップ機能の確認のために、Arduino UNO で以下のような単純な回路とスケッチを作りました。
単に、入力ピン(2ピン)と出力ピン(4ピン)が短絡した時に入力ピンが LOW になっているかを確認しているだけです。
図.1 回路
表.1 スケッチ
test.ino
1const int INPUT_PIN = 2; 2const int OUTPUT_PIN = 4; 3 4bool old_state, current_state; 5 6void setup() { 7 // ピン初期化 8 pinMode(INPUT_PIN, INPUT_PULLUP); // 入力(プルアップ) 9 pinMode(OUTPUT_PIN, OUTPUT); // 出力(LOWに固定) 10 digitalWrite(OUTPUT_PIN, LOW); 11 12 old_state = current_state = HIGH; 13 Serial.begin(9600); 14} 15 16void loop() { 17 current_state = digitalRead(INPUT_PIN); 18 19 if (current_state != old_state) { 20 if (current_state == LOW) { 21 Serial.println("Push"); 22 } else { 23 Serial.println("Release"); 24 } 25 26 old_state = current_state; 27 } 28 29 delay(10); 30}
この回路(図.1)では、スイッチで両ピンが短絡しても問題なく入力ピンで Low が検出できました。
また、テスターで計測したら端子間に流れる電流は 0.10mA 程度で問題はなさそうです。
仮定と疑問
この回路は一見すると High と Low の端子同士が短絡しているように見えるので過電流が流れそうです。
ただし、プルアップにすると内部に抵抗成分が出来るらしいので、その抵抗のおかげで過電流が流れないという仮定をしましたが、正しいのでしょうか。
しかし、このような回路を作成してよいとしている Web サイトとしてはいけないとしている Web サイトの両方見つかります。
このサイトではプルアップ設定の入力端子を GND に短絡させた回路を作成しています。
しかし、このサイトではこのような回路を作成してはいけないとしています。
このモード(内部プルアップモード)に設定しておいたのを忘れ、万が一、そのピンをGNDに直接つないでしまったとき、ショート状態になってArduinoを壊してしまうことになります。
また、次のようなサイトには、一定の組み合わせ(High と Low の入力ピン同士の短絡)は Arduiono を破壊する恐れがあると記載されています。
このような情報を得てるうちに、問題のない組み合わせとよい組み合わせの違いがわからなくなってきました……。
どういう原理でこれらの組み合わせについての問題ありなしを判断すればよいのでしょうか?
ご存知の方がいらっしゃいましたら、ご教示いただけると幸いです。

回答4件
あなたの回答
tips
プレビュー