View on GitHub

pages

デジタルピン

Arduinoのピンは入力または出力として構成できます。このページではこれらのモードでのピンの機能について説明します。このページのタイトルはデジタルピンとしていますが、Arduino(ATMega)のアナログピンの大部分はデジタルピンとまったく同じ方法で構成及び使用できることにご注意ください

INPUTとして構成されたピンについて

Arduino(ATMega)のピンはデフォルトで入力となっているため、入力として使用する場合はpinMode() で入力として明示的に宣言する必要はありません。入力として構成されたピンはハイインピーダンス状態にあると考えることができます。具体的には100MΩの直列抵抗に相当します。これは、入力ピンの状態を変えるのに必要な電流が非常に少ないことを意味し、容量性タッチセンサの実装、フォトダイオードとしてのLEDの読み取り、またはスキームを使用したアナログセンサの読み取りなどに使用できます。

ただし、これはピンに対し何も接続されていない状態で入力として構成されたピンは周囲から電気ノイズを拾い、このピン状態を読み取るとランダムな値が出力されることを意味します

INPUT_PULLUPとして構成されたピンについて

基本的に、入力が存在しない場合は入力ピンを特定の状態に固定できるようにすると便利です。そのために、入力に対しプルアップ抵抗(+5Vまでの電源に接続された抵抗)かプルダウン抵抗(GNDに接続された抵抗)を追加することで実現が可能です。10kΩが適しているとされていますが、ある程度の大きさであれば多少の違いは問題にはなりません。

ATMegaマイコンには、内部からアクセスできる10kΩのプルアップ抵抗が内蔵されています。これはpinMode(pin, INPUT_PULLUP) として構成することで有効にすることができます。入力ピンとGNDの間にノーマリ・オープンの接点を接続した場合、スイッチが開放状態だとHIGH 、短絡状態だとLOW となります

このプルアップ抵抗の値は、使用するマイコンによって異なります。ほとんどのAVRベースのボードの場合、この値は20k〜50kΩであることが保証されています
ただしArduino Dueボードは50k〜150kΩです。正確な値はボードに搭載されているマイコンのデータシートを参照してください

プルアップ抵抗は入力として構成されたピンに接続されているLEDを薄暗く点灯させる場合があります。接続された回路のLEDが機能してはいるがとても暗い場合、これが起こっている可能性があります

プルアップ抵抗は、ピンがHIGHLOWかを制御するレジスタによって制御されます。したがって、ピンがINPUTのときにプルアップ抵抗が有効になるよう構成されたピンに対しpinMode() を使用してOUTPUTに切り替えると、そのピンはHIGHを出力します。逆も同様で、HIGHの状態に設定されているピンに対しpinMode() を使用して入力に切り替えると、プルアップ抵抗が有効となります

Arduino 1.0.1以前は以下の方法で内部プルアップを有効にできました

pinMode(pin, INPUT);
ditalWrite(pin, HIGH);

注: デジタルピン13番はほとんどのボードで内蔵LEDと保護抵抗に接続されているため、デジタル入力として使用することは困難です。内蔵の20kΩのプルアップ抵抗を有効にすると、オンボードLEDと保護抵抗によって分圧されるため、本来の5Vではなく約1.7Vとなります。つまり常にLOWとして判断されます。13番ピンをデジタル入力として使用する必要がある場合はpinMode()でINPUTに設定し、外部にプルダウン抵抗を接続します

OUTPUTとして構成されたピンについて

pinMode()OUTPUTとして構成されたピンは、低インピーダンス状態にあると考えることができます。これは接続された回路に対し大きな電流を供給できることを意味します。ATMegaのピンは、外部の回路に対し最大で40mAの電流をソース(流し込み)またはシンク(引き込み)として供給できます。これは、LEDを明るく照らしたり(ただし保護抵抗を忘れないでください)、多数の低消費電力なデバイスを動作させたりするの時は十分ですが、ほとんどのリレー、ソレノイドあるいはモータを駆動するのには不十分です

Arduinoピンの短絡、あるいは大電流を流そうとすると、ピンの出力トランジスタが損傷または破壊されたり、ATMegaチップ全体が損傷したりする可能性があります。多くの場合、これによってマイコンにデッドピンが発生しますが、残りのピンは引き続き問題なく機能します。特別な事情によりピンから最大電流を引き出す必要がない限り、出力ピンと他のデバイスの間に470Ωや1kΩの抵抗を接続することを推奨します

関連

出典

このページはArduino公式のページを翻訳したものです(一部意訳を含みます)

一覧に戻る
トップページに戻る