指定されたアナログピンからデータ値を読み取ります。
Arduinoボードには、マルチチャネルの10ビットアナログ-デジタルコンバーターが搭載されていますので、0から動作電圧(5Vまたは3.3V)までの入力電圧を、0から1023の整数値に変換して読み取ることができます。
5Vとした場合、0~ 1023(分解能=1024)ですので、1段階あたり0.0049V(4.9 mV)として計算をし現在の電圧を取得することができます。
Arduinoのボードごとの使用可能なピン、動作電圧、および最大解像度は下記の表のとおりです。
ボード | 動作電圧 | 入力ピン | 分解能 |
---|---|---|---|
Uno |
5 V |
A0 ~ A5 |
10 ビット |
Mini, Nano |
5 V |
A0 ~ A7 |
10 ビット |
Mega, Mega2560, MegaADK |
5 V |
A0 ~ A14 |
10 ビット |
Micro |
5 V |
A0 ~ A11* |
10 ビット |
Leonardo |
5 V |
A0 ~ A11* |
10 ビット |
Zero |
3.3 V |
A0 ~ A5 |
12 ビット** |
Due |
3.3 V |
A0 ~ A11 |
12 ビット** |
MKR Family boards |
3.3 V |
A0 ~ A6 |
12 ビット** |
※A0からA5は、ボードのコネクタにラベルが付けられており、A6からA11はそれぞれピン4、6、8、9、10、および12で使用できます。
※analogReadは互換性のため、分解能はすべて10ビットです。
12ビットに変更するには、analogReadResolution()を使用する必要があります。
書き方 | アナログ値=analogRead(ピン番号) |
戻り値 | 読み込んだアナログ値(0~1023) |
引数 | ピン番号 |
プログラム例
analogPinの電圧を読み取りシリアルモニターに表示します。
int analogPin = A1; void setup() { Serial.begin(9600); } void loop() { int val = analogRead(analogPin); Serial.println(val); }
実験
弊社の二足歩行プログラミングロボットクムクムロボットでは、電池電圧をこの関数を使って読み取ることができます。
※クムクムロボットではサーボモータへの電源とCPUへの電源を電池から供給しています。
※サーボモータはおおよそ2.9V未満になるとちゃんと動作しないため、この関数で電池残量を図り、2.9V程度になったらモータへの電源供給を止めるか、detach()関数でモータの接続を切り離します。