プロジェクト19 調光ランプ

1. 説明

調光ランプは、ポテンショメーターとArduinoコントローラーを使ってLEDの明るさを調整します。明るさは抵抗値に依存し、ポテンショメーターの端をボードのデジタルまたはアナログピンに接続することで読み取り・調整が可能です。さらに、このシステムはファン、電球、ヒーターなど他のデバイスの電圧や電流の制御にも応用できます。

2. 動作原理

本質的に、ポテンショメーターは抵抗値を変化させることができる素子です。オームの法則(U=I*R)によれば、抵抗は電圧に影響を与えます。今回のポテンショメーターは10Kです。

このプロジェクトでは、最大抵抗値は10Kです。ESP32ボードは3Vの電圧を4095分割(3/4095=0.0007326007326)します。アナログ電圧は読み取った値に0.0007326007326を掛けることで得られます。

3. 配線図

4. テストコード

/*
  keyestudio ESP32 Inventor Learning Kit  
   Project 19.1 Dimming Lamp
  http://www.keyestudio.com
*/
int pot = 34;      //Define variable pot to IO34

void setup() 
{
  // put your setup code here, to run once:
  Serial.begin(9600);		//Set baud rate to 9600
}

void loop() 
{
  // put your main code here, to run repeatedly:
  int value = analogRead(pot);	//Read io34 and assign it to the variable value
  Serial.println(value);		//Print the variable value and wrap it around 
  delay(200);
}

5. テスト結果

配線を接続しコードをアップロードした後、シリアルモニターを開きボーレートを9600に設定すると、0~4095の範囲でアナログ値が表示されます。ポテンショメーターを回すことでアナログ値の大きさが変化します。

6. 知識の拡張

ポテンショメーターを使ってLEDの明るさを制御します。ご存知のように、これはPWMに影響されます。しかし、アナログ値の範囲は0~4095であるのに対し、PWMの範囲は0~255です。したがって、"map(value, fromLow, fromHigh, toLow, toHigh)"関数が必要になります。

配線図:

コード:

/*
  keyestudio ESP32 Inventor Learning Kit  
   Project 19.2 Dimming Lamp
  http://www.keyestudio.com
*/
int led = 25;		//Define LED to IO25
int pot = 34;		//Define pot to IO34

void setup() 
{
  // put your setup code here, to run once:
  pinMode(led,OUTPUT);		//Set LED pin to output 
}

void loop() 
{
  // put your main code here, to run repeatedly:
  int value = analogRead(pot);
  int led_val = map(value,0,4095,0,255);  //Convert the range of potentiometer analog value to the range we need  
  analogWrite(led,led_val);
}

7. テスト結果

コードのアップロードが成功した後、ポテンショメーターを回すと赤色LEDの明るさが変化します。