Arduinoチュートリアル 基礎編


デジタルピン

原文

Arduinoのデジタルピンは入力(INPUT)または出力(OUTPUT)として設定できます。

【INPUTに設定されたピン】

Arduino(ATmegaマイコン)のピンは入力がデフォルトです。pinMode()で明示的に宣言する必要はありません。
入力に設定されたピンはハイインピーダンス状態にあると言われます。これは、回路から信号を得るときにきわめてわずかな負担しかかけないことを意味します。別の言い方をすると、ピンに100MΩの抵抗を直列につないだ状態に相当し、ほんのわずかな電流しか流れません。この特徴は静電容量式タッチセンサを実装するような場合に有効です。

ハイインピーダンス状態にあるピンを回路の他の部分に繋がずに使うと、(ノイズや容量結合の影響を受けて)そのピンの状態はランダムに変化してしまう点に注意してください。

【プルアップ抵抗】

なにも入力がないときでもピンの状態が確定してくれると便利です。プルアップ抵抗(+5Vに接続)かプルダウン抵抗(グランドに接続)を使うとそれが可能になります。抵抗の値は10KΩが一般的です。

ATmegaマイコンには内蔵のプルアップ抵抗があります。これはソフトウエアからアクセスすることができるので便利です。次のようにすると、内部プルアップが有効になります。

pinMode(pin, INPUT);           // ピンを入力に設定
digitalWrite(pin, HIGH);       // プルアップ抵抗を有効に

プルアップ抵抗は、入力に設定されたピンにつながっているLEDをかすかに光らせるくらいの電流を供給することを覚えておきましょう。ある作品のLEDがぼんやり光っているとしたら、その作品のプログラマはピンのモードを出力にセットするのを忘れたのかもしれません。

プルアップ抵抗をコントロールするレジスタは、出力ピンのHIGH/LOWを決定するときに使われるものと同じです。つまり、内部プルアップが有効になっているピンをpinMode()を使ってOUTPUTに設定すると、HIGHが出力されます。逆の場合も同様で、HIGHを出力しているピンのピンモードをINPUTに変更すると、プルアップ抵抗がセットされます。

【OUTPUTに設定されたピン】

pinMode()でOUTPUTに設定されたピンはローインピーダンス状態にあると言われます。これは、回路に十分な量の電流を供給できることを意味します。ATmegaのピンはソース(正の電流源)としても、シンク(負の電流源)としても機能し、最大40mAを他のデバイスや回路に対して供給できます。これはLEDを明るく光らせるのにじゅうぶんな電流です(抵抗器を直列につなぐのを忘れないでください)。また、ほとんどのセンサを駆動できます。しかし、リレー、ソレノイド、モータなどを動かすには足りません。

Arduinoのピンをショートさせると、過大な電流が流れようとします。その結果、出力トランジスタが破壊されたり、チップ全体がダメージを受けるかもしれません。チップの大半の機能は無事でも、ピンが1本死んだ状態になることがあります。最大電流を必要とする特別な理由がない限り、出力ピンと他のデバイスの間に470Ωから1KΩの抵抗器をつなぐことで、このトラブルを予防できます。



[目次へ戻る]

Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはArduino Teamにより執筆され、Takumi Funadaが翻訳し、一部加筆修正したものです
ご意見はtf at musashinodenpa.comまでお送りください [ドキュメント一覧]