Arduino アナログ入力に滑らかに変化する

このチュートリアルは武蔵野美術大学通信教育課程授業用に作成したものです。
今回は授業課題の基礎である行為にシームレスに反応する基礎サンプルを紹介します

今回はポテンショメータとLEDを使って、「ノブを回したら光が灯る」プログラムを実装します。こちらこちらのサンプルを理解してから読み進めてください。

画像のようにポテンショメータをA0へ、LEDをD9に接続してください。(LEDには330オームの抵抗を入れるのを忘れずに)

プログラム

スケッチの例から03.Analog / AnalogInOutSerialを開きます。(一部コメントを削除しています)

// These constants won't change. They're used to give names to the pins used:
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9;  // Analog output pin that the LED is attached to

int sensorValue = 0;  // value read from the pot
int outputValue = 0;  // value output to the PWM (analog out)

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);
  // map it to the range of the analog out:
  outputValue = map(sensorValue, 0, 1023, 0, 255);
  // change the analog out value:
  analogWrite(analogOutPin, outputValue);

  // print the results to the Serial Monitor:
  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print("\t output = ");
  Serial.println(outputValue);

  // wait 2 milliseconds before the next loop for the analog-to-digital
  // converter to settle after the last reading:
  delay(2);
}

プログラムをアップロードし、シリアルモニタで確認すると、ノブの回転に合わせて数値が変化します。
「sensorValue」はポテンショメータの値をそのまま表示しています。「outputValue」はmap関数により0~1023の値を0~255までの値に変換しています。これにより、LEDの「analogWrite」の値をノブの最小〜最大の回転角に合わせることができます。