Analog Read Serial

ポテンショメーターを読み、その状態をArduinoのシリアルモニターに表示します。


Last revision:2024/10/03

この例では、ポテンショメーターを使い、物理世界からアナログ入力を読む方法を示します。ポテンショメーターは、つまみを回すと抵抗が変化する、簡単な機械デバイスです。ポテンショメータを通じてボードのアナログ入力に電圧をかけることで、ポテンショメーターの抵抗値をアナログ値として測定することができます。この例では、ArduinoとArduinoソフトウェア(IDE)を実行しているPCとの間でシリアル通信を確立した後、ポテンショメーターの状態を観測します。

必要なハードウェア

回路

3本の電線でポテンショメーターとArduinoボードを接続します。1本目は、ポテンショメーターの外側のピンとGNDを接続します。2本目は別の外側のピンと5Vを接続します。3本目は、アナログ入力0とポテンショメーターの真ん中のピンを接続します。

ポテンショメーターのつまみを回し、ポテンショメーターの中央ピンに接続されているワイパー(ポテンショメーターの中央ピン)の両側の抵抗値を変更します。これは中央ピンの電圧を変化させます。中央ピンと、5Vに接続されている端子間の抵抗が0に近づくと(そして他の端子の抵抗が10kΩに近づくと)、中央ピンのは5V付近になります。抵抗値が逆になると、中央ピンの電圧は0V(GND)付近になります。この電圧は、入力として読むアナログ電圧です。

Arduinoボードには、内部にアナログデジタル変換器(ADC)と呼ばれる回路があり、この変化する電圧を読み取り、0から1023の数値に変換します。つまみを片側に全て回すと、中央ピンとGNDに接続されているピンとの間の抵抗が0になります。このとき、中央ピンの電圧は0Vになり、入力値は0になります。つまみを反対側に全て回すと、中央ピンの電圧は5Vになり、入力値は1023になります。その間では、analogRead()は、0と1023の間の値を返し、その値はピンにかかる電圧に比例します。

回路図

コード

以下のコードのsetup関数では、以下のコマンドで、ボードとPC間を9600bpsで通信するようシリアル通信を設定しています。

Serial.begin(9600);

次に、コードのメインループでは、ポテンショメーターから読み取る抵抗値を格納する変数を宣言します。この値は、0と1023の間で、int型が最適です。

int sensorValue = analogRead(A0);

最後に、この情報をシリアルモニターウインドウに表示します。これは、最後の行のSerial.println()関数で行います。

Serial.println(sensorValue);

これで、Arduinoソフトウェア(IDE)のシリアルモニターを開くと(上部の緑色のバーの右側にあるレンズのように見えるアイコンをクリックするか、Ctrl+Shift+Mのキーボードショートカットを使うかします)、ポテンショメーターの位置に応じて、0から1023の数字が表示されていくのがわかります。ポテンショメーターを回すと、これらの数値はすぐに反応します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
  AnalogReadSerial

  Reads an analog input on pin 0, prints the result to the Serial Monitor.
  Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu).
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/AnalogReadSerial
*/

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1);  // delay in between reads for stability
}

さらに学ぶ

付属のスケッチ例に、さらに多くの基本的なチュートリアルがあります。

Arduinoプログラミング言語の詳細を集めた、言語リファレンスを調べることもできます。

オリジナルのページ

https://docs.arduino.cc/tutorials/uno-rev3/AnalogReadSerial/

最終更新日

August 16, 2026

inserted by FC2 system