AnalogReadSerial

はじめに

アナログピンから読み込んだ値をシリアルモニタに送信します。

analogRead()と、Serialdelay()を利用します。

プログラム

setup()

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
/*
  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);
}
 

Serialは、Arduinoソフトウェアにより事前に定義されている変数(C++のオブジェクト)です。シリアルモニタと通信を行うときに利用します。

Serial.begin()により、通信速度を設定(今は9600bps)します。Arduinoソフトウェアのシリアルモニタの通信速度と同じ値に設定します。そうでないと、文字化けします。

loop()

19
20
21
22
23
24
25
26
// 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
}

sensorValueは、int型の変数で、その値を、analogRead(A0)の結果で初期化します。

この変数は、loop()が呼ばれるたびに、毎回定義(初期化)されます。

A0は、Arduinoソフトウェアにより事前定義された変数で、アナログピンの0番を表します。数字の0を与えても同じですが、プログラムの再利用の観点から、こちらの表記を利用することが望ましいと思います。

A0は、(Arduino Unoの場合)14と定義されていますが、analogRead()の最初に、ピン番号が14以上のときは14を引くという処理が入っているので、特に問題なく動作します。A0が14と定義されているのは、Arduinoのアナログピンは、デジタルピンとしても利用でき、そのときのピン番号が14から始まるためと思います。Megaでは異なる値です。

analogRead()は、アナログピンから値を読みだす関数です。引数に与えたピンの値を読みだします。ここでは、0番ピンの値を読み出します。

読み取った値(sensorValue)を、Serial.println()を使って、シリアルモニタに表示します。analogRead()は、0から1023までの整数値を返却します。また、loop()関数は無限に繰り返して実行されるため、シリアルモニタには、0から1023までの数字が表示され続けます。

loop()の終わりにdelay()を使って、1ミリ秒のディレイ(遅延)を入れています。コメントによるとanalogRead()の安定性のためとあります。

バージョン

Hardware:Arduino Uno
Software:Arduino 1.8.16

最終更新日

September 11, 2021

inserted by FC2 system