アナログ入力ピン

Arduinoでアナログ入力ピンがどのように動作するのか紹介します。


LAST REVISION: 2022/08/19 17:23


Arduinoチップ(ATmega8、ATmega168、ATmega328P、ATmega1280)のアナログ入力ピンの説明です。

A/Dコンバーター

Arduinoに利用されるATmegaコントローラには、オンボードの6チャネル(MiniとNanoは8チャネル、Megaは16チャネル)のアナログ-デジタル(A/D)コンバータが搭載されています。コンバータは10ビットの精度で、0から1023までの整数を返します。ほとんどのArduinoユーザにとって、アナログピンの主要機能はアナログセンサーの読み取りですが、デジタルピンの0番から13番と同じ汎用入出力(GPIO)ピンとしての全ての機能も持っています。

このため、より多くのGPIOが必要な場合で、アナログピンを利用していない場合は、アナログピンをGPIOとして利用することができます。

ピンマッピング

アナログピンは、A0(アナログ入力ピンの0番)やA1といった別名を使って、デジタルピンと同じように使うことができます。例えば、アナログピンの0番ピンを出力にし、HIGHを設定するには、以下のようなコードになります。

1
2
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);

プルアップ抵抗

アナログピンにもプルアップ抵抗があり、デジタルピンのプルアップ抵抗と同じように使うことができます。以下のようなコマンドを利用することで有効にすることができます。

1
pinMode(A0, INPUT_PULLUP);  // set pull-up on analog pin 0

プルアップ抵抗を利用すると、analogRead()で返される値に影響があることに注意してください。

詳細と注意

ピンが出力(OUTPUT)に設定されていた場合、analogRead()コマンドは正しく動作しません。この場合、analogRead()を利用する前に、一度入力(INPUT)にする必要があります。同様に、ピンがHIGHを出力していた後に入力に切り替えると、プルアップ抵抗が設定されています。

ATmegaのデータシートは、他のアナログピンのA/D読取を行う直前の、アナログピンの切り替えにも注意するよう記載があります。電気的なノイズが発生し、アナログシステムにジッターを発生させる可能性があります。アナログピンをデジタルモードで操作した直後にanalogRead()を使ってアナログピンを読む場合は、その前に短い遅延を入れることが望ましいです。

オリジナルのページ

https://docs.arduino.cc/learn/microcontrollers/analog-input

最終更新日

October 23, 2022

inserted by FC2 system