ポテンショメータでLEDの明るさを変えよう!

●ポテンショメータの構成とこれを使って計測方法

ポテンショメータとは可変抵抗器のことで、昔のTVやラジオのボリューム調整などに使われている部品です。下図左のように3端子が出ており、右図のようにA、C点に電圧5Vをかけ、B点の電圧を取り出すことでB点がどこにあるかが計算できるようになっています。計算方法は下側の計測方法の図にあるようにAB点間では5a/(a+b)[V]、BC点間では5b/(a+b)[V]となります。

ポテンショメータの電圧測定方法

●ポテンショメータの値をArduinoで読み込む

ポテンショメータの値を読み込み、その値に応じてLEDの明るさ調整をします

下図のようにポテンショメータの抵抗値を電圧に変換してA0端子を通して読み込みます。その読み込んだ値に応じてLEDを光らせます。ポテンショメータの読み込み値が0の時にはLEDを消灯、ポテンショメータの読み込み値が1023(5Vに対応。Arduinoでは10bitのAD変換器が使われているので、2^10=1024の分解能がある)に向かうにつれて明るくなるようにします。

下図のように配線します。抵抗は200Ωとしています。

Arduinoのようにマイコンなどのコンピュータを使い、プログラムで操作できる場合には、入力(この場合はポテンショメータ)は入力回路、出力(この場合はLED)は出力回路と回路を切り分けてそれぞれをArduinoの入出力ピンにつなぎます。その後はプログラムで入力と出力を自在に扱えるのが魅力です。しっかり切り分けて簡単な回路を作成し、それらをプログラムで結合することが大切ですね。

下記のプログラムではポテンショメータの値をA0ピンから入力しています。Arduinoでは10bitのAD変換器が使われているので、読み込んだ値は0~1023となります。一方LEDへの出力に使うanalogWrite関数は第2引数でPWMのdutyを0~255の値で指定します。0のときは出力0で255のときはフルの出力に対応します。ですので、読み込んだ1023までの値をそのまま出力すると256毎に折り返しが発生します。下記ではmap関数を使い、読み込んだ0~1023の値を0~255の値へ縮小変換しています。これによりポテンショが右に行くほど、LEDが明るくなるようになっています。

// potentiometer

// Oz@SIT all rights reserved.

// 2022/09/12 rev. 0.1

/*

Read a potentiometer, and analogWrite to an LED according to the read value.

*/

#define LED 5 //set LED as 5: LEDを5番ピンに接続


void setup()

{

}


void loop()

{

int val = analogRead(A0); //read in potentiometer from A0

val = map(val, 0, 1023, 0, 255); //map the value from 0 - 1023 to 0 - 255.

analogWrite(LED, val); //Light the LED with PWM value of val.

}

問題

  • ポテンショメータが右に行くほどLEDが暗く、左に行くほどLEDが明るくなるようにせよ。すなわちポテンショメータの読み値が1023の時にLEDが消灯し、読み値が0の時にLEDが最も明るくなるようにせよ。