名称
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回値を読み取ることができる。
ボード | 動作電圧 | 利用可能ピン | 最大精度 |
---|---|---|---|
Uno | 5V | A0~A5 | 10ビット |
Mini, Nano | 5V | A0~A7 | 10ビット |
Mega、Mega2560、MegaADK | 5V | A0~A14 | 10ビット |
Micro | 5V | A0~A11* | 10ビット |
Leonardo | 5V | A0~A11* | 10ビット |
Zero | 3.3V | A0~A5 | 12ビット** |
Due | 3.3V | A0~A11 | 12ビット** |
MKR Familyボード | 3.3V | A0~A6 | 12ビット** |
* 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.
使用例
アナログピンから電圧を読み取って表示する。
|
|
注意
アナログ入力ピンに何も接続されていないとき、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.
参照
利用例 Description of the analog input pins
オリジナルのページ
https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/
Last Revision: 2019/07/03
実装の解析
最終更新日
November 1, 2022