analogRead

動作

Arduinoボードのピンの電圧をアナログ値で読み取ります

電圧をアナログ値で読み取る」とは、ピンの電圧を連続的な数値(整数)で読み取る、という意味です。

読み取った数値は実際の電圧ではなく、電圧に対応した数値です。例えば、5V動作のArduino Unoシリーズでは、ピンの電圧が最小の0Vのときは0、最大の5Vのときは1023、半分の2.5Vのときは512、などのように、最大電圧を1023、0Vを0とした電圧に比例した値になります。(最大値の数値はボードや設定に異なります。詳細は補足をご参照ください)

この読み取りは、Arduinoボード内部に次ような電圧計が内蔵されているイメージです。読み取ったピンの電圧を対応する整数値に置き換えるようなイメージです。

例えば、0〜5Vの測定範囲でピンの電圧が2.8Vのとき、analogReadで読み取る値は「2.8V」が0〜1023の数値範囲で計算されます( 2.8 ÷ 5 × 1023 = 572.88 → 切り捨てて572 )

補足

analogRead関数が利用できるピンは限られています。
一般的にピン名に「A」が付いているピン(A0〜A5など)が対応しています。具体的に使用できるピンはArduinoボードによって異なりますので「補足:analogReadが使用できるピン」セクションを参照ください。

主な用途

  • 温度センサー(アナログ電圧出力タイプ)の電圧値読み取り
  • ボリューム(可変抵抗)の回転位置の読み取り
  • 圧力センサーやジョイスティックなどのアナログ出力センサーの読み取り
  • 電池の電圧の読み取りなど
補足

analogRead関数は、ピンの電圧を連続した数値(アナログ値)として読み取ります。
(「連続した値を読み取る」=「アナログ」)

例えば、スイッチのON/OFFのように電圧が高いか低いかの2つの状態だけを読み取る場合はdigitalRead関数を使います。

書式

int value = analogRead(pin);
引数pin電圧を読み取るピンを指定します。
ピン名(A5など)で指定します。
戻り値0〜1023の整数値(分解能10ビットの場合)
0〜4095の整数値(分解能12ビットの場合)
0〜16383の整数値(分解能14ビットの場合)
0〜65535の整数値(分解能16ビットの場合)
電圧に比例した値が返ります。0Vのとき0、動作電圧のとき最大値になります。(動作電圧が5Vのときは5Vの時に最大値)
戻り値の数値範囲はボードごと、設定ごとに異なります。詳細は「補足:分解能」をご参照ください。

使用例

次のコードにより、指定したピンの電圧をアナログ値で読み取ることができます。

int value = analogRead(A5);  // ピン名指定 - A5ピンの電圧値を読み取って変数に代入
int value = analogRead(19);  // ピン番号指定 - A5ピン = 19番ピン
ポイント

アナログピンをピン番号で指定することもできます。例えばArduino Unoシリーズでは、analogRead(14)analogRead(A0)と同じ動作です。ただし、ボード名に記載されているピン名(A0など)で指定した方がアナログピンであることが明確になり、スケッチの可読性が高くなるため、ピン名指定をおすすめします。

サンプルスケッチ

A0ピンに接続したボリューム(可変抵抗)の電圧を読み取り、読み取った値をシリアルモニタに表示するスケッチです。読み取り数値範囲は0〜1023です(分解能10ビットの場合)。

ボタンをクリックするとシミュレーターが動作します。スケッチを変更することもできます。変更した場合、シミュレーションを一度 ボタンをクリックして停止してから再度シミュレーターを開始してください。