analogRead()

名称

analogRead()

説明

指定したアナログピンから値を読み取る。Arduinoボードは、10ビットのアナログ-デジタル変換機を搭載している。これにより、0Vから動作電圧(5Vもしくは3.3V)の入力電圧を、0から1023の整数値に変換する。例えば、Arduino Unoでは、読み取り精度は、5/1024Vもしくは、0.0049V(4.9mV)となる。いくつかのArduinoボードでの、利用可能なピン、動作電圧、最大精度を下の表にまとめてある。

入力電圧の範囲と精度はanalogReference()を使うことで変更できる。ZeroとDue、MKRボードでは、analogReadResolution()を使って精度を変更することができる。

ATmegaベースのボード(UNO、Nano、Mini、Mega)では、アナログ入力を読み取るのに100マイクロ秒(0.0001秒)かかる。このため、1秒間に最大10000回値を読み取ることができる。

ボード動作電圧利用可能ピン最大精度
Uno5VA0~A510ビット
Mini, Nano5VA0~A710ビット
Mega、Mega2560、MegaADK5VA0~A1410ビット
Micro5VA0~A11*10ビット
Leonardo5VA0~A11*10ビット
Zero3.3VA0~A512ビット**
Due3.3VA0~A1112ビット**
MKR Familyボード3.3VA0~A612ビット**

* A0からA5まではボード上に記載されている。A6からA11は、それぞれ、4、6、8、9、10、12番ピンで利用可能。

**analogRead()のデフォルトの精度は、互換性のため、10ビット。12ビットに変更するためには、analogReadResolution()を使う必要がある。

書式

int analogRead(uint8_t pin);

引数

pin読み取りに利用するアナログ入力ピンの番号。ほとんどのボードでは0から5、MKRボードではA0からA6、MiniとNanoでは0から7、Megaでは0から15。

戻り値

ピンから読み取ったアナログ値。アナログ-デジタル変換器の精度によって制約がある。10ビットの場合は0-1024、12ビットの場合は0-4095.

使用例

アナログピンから電圧を読み取って表示する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int analogPin = A3; // potentiometer wiper (middle terminal) connected to analog pin 3
                    // outside leads to ground and +5V
int val = 0;  // variable to store the value read

void setup() {
  Serial.begin(9600);           //  setup serial
}

void loop() {
  val = analogRead(analogPin);  // read the input pin
  Serial.println(val);          // debug value
}

注意

アナログ入力ピンに何も接続されていないとき、analogRead()が返却する値は、種々の要因(他のアナログ入力の値、手とボードとの距離等)によって変動する。

訳者註

ピン番号の指定

アナログピンの番号は0から5までの数字以外に、A0からA5という変数を使うこともできます。A0は、(Arduino Unoの場合)14と定義されていますが、analogRead()の最初に、ピン番号が14以上のときは14を引くという処理が入っているので、特に問題なく動作します。

戻り値の扱い

オリジナルの説明が微妙ですが、Arduino Uno(ATmega328P)の場合、0Vから5Vが、0から1024(1023ではなく)にマッピングされます。結果は、0から1023です(10ビットなので)。

ATmega328Pのデータシートには、以下のように記載されています。

For single ended conversion, the result is

$$ ADC = \frac{V_{in}\cdot 1024}{V_{REF}} $$

where $V_{IN}$ is the voltage on the selected input pin and $V_{REF}$ the selected voltage reference.

参照

言語 analogReadResolution()

利用例 Description of the analog input pins

オリジナルのページ

https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/

Last Revision: 2019/07/03

実装の解析

analogRead()

最終更新日

January 4, 2024

inserted by FC2 system