INPUTとINPUT_PULLUPの違いは何ですか?


24

新しいArduinosで、1は、3つの状態のいずれにpinModeを設定することができますOUTPUTINPUTINPUT_PULLUP

このページの内容

ArduinoのAtmegaチップには、内部プルアップ抵抗(内部で電源に接続する抵抗器)があり、アクセスできます。外部プルダウン抵抗の代わりにこれらを使用する場合は、pinMode()でINPUT_PULLUP引数を使用できます。これは効果的に動作を反転させます。HIGHはセンサーがオフであることを意味し、LOWはセンサーがオンであることを意味します。

ただし、動作を逆にするだけではないことを確信しています。

何をINPUT_PULLUPするの?それとの違いは何INPUTですか?また、使用するものをどのように決定しますか?


INPUT_PULLUPはIDE 1.0.1で追加されました。どのArduinoボードを使用するかは関係ありません。それらはすべてPULLUPをサポートしています。
ボールドエンジニア

回答:


23

デフォルトではINPUT、ピンはとして設定されますINPUT。ピンが完全に切断されている場合、ランダムに読み取られHIGH、になりLOWます。+ 5Vまたは0Vに接続すると、明らかにHIGHまたはが表示されLOWます。

Arduinoの内部には、50kオーム前後の値のプルアップ抵抗があります。これらの抵抗は、を使用してオプションで内部的に接続できますINPUT_PULLUP。これは、ピンと+ 5Vの間に50kオームの抵抗を接続するのと機能的に(および電気的に)同等です。唯一の違いは、外部コンポーネントを必要とせず、プログラムの実行中にソフトウェアでオンとオフを切り替えることができることです。

では、なぜプルダウンではなくプルアップなのでしょうか?おそらくいくつかの理由がありますが、ボタンやスイッチ、または「通常開いている」ものを配線するときは、それらをアースにつなぐだけで、+ 5Vを実行する必要はありません。いずれにせよ、ほとんどのボードはシールドの理由で大きなグランドを使用して設計されるため、グランドに接続することが実際的な理由です。

ARMチップなどのその他の機能を備えたICにはプルアップとプルダウンの両方がありますが、8ビットAVRラインにはプルアップのみが付属しています。あなたHIGHはそれが「開いている」とLOW「閉じている」ことを覚えておく必要があります。


賛成票。参考までに、ドキュメントによると、内部プルアップは20Kであり、50Kと大きな違いはありません。 arduino.cc/en/Tutorial/DigitalPins
SDsolar

9

1.0.1より前では、を使用してプルアップをオンにできることに注意してくださいdigitalWrite()。そして、まだできます。

コード:

pinMode(13, INPUT);
digitalWrite(13, HIGH); // Turns internal pull-up on
digitalWrite(13, LOW);  // Turns internal pull-up off

INPUT_PULLUPプルアップ抵抗が明らかにオンになるため、これは重要な違いです。ただし、それほど明らかではありませんが、1.0.1以降では、単純に呼び出すとINPUTプルアップがオフになります。(以前は、プルアップの状態は同じままでした)。

ピンがプルアップありとプルアップなしでどのように動作するかを確認するには、次のビデオをご覧ください。

オシロスコープのフローティングピン:http : //www.youtube.com/watch? v =dBIBFLYCjMM

プルアップを有効にした場合:http : //www.youtube.com/watch? v=SAIw7LLVl- U

プルアップに関する完全なチュートリアルビデオ(INPUT_PULLUPがArduinoライブラリに追加される前に作成したことに注意してください):http : //www.youtube.com/watch? &v=jJnD6LdGmUo


非常に賢い。これを書いてくれてありがとう。賛成票。
SDsolar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.