ここまでの学習で、PWMを使ったLEDの明るさコントロール、ADCを使ったポテンショメーターの値取得について学習しました。


今回はそれらを組み合わせて、ポテンショメーターを使用したLEDの明るさ制御をしてみましょう。
回路図

接続図

コード
/**********************************************************************
Filename : SoftLight
Description : Controlling the brightness of LED by potentiometer.
Auther : www.freenove.com
Modification: 2022/10/21
**********************************************************************/
#define PIN_ANALOG_IN 1
#define PIN_LED 14
#define CHAN 0
void setup() {
ledcSetup(CHAN, 1000, 12);
ledcAttachPin(PIN_LED, CHAN);
}
void loop() {
int adcVal = analogRead(PIN_ANALOG_IN); //read adc
int pwmVal = adcVal; // adcVal re-map to pwmVal
ledcWrite(CHAN, pwmVal); // set the pulse width.
delay(10);
}
ポイントは11行目でledcSetupする際に、12ビットで設定しているところです。以前のPWMを使用したLEDの明るさ制御では8ビットで初期化していましたが、ここを12ビットにすることでADCの12ビットと解像度が一致します。そのため、18行目のledcWriteでpwmValをそのまま設定することができます。
次回はポテンショメーターを3つに増やしてRGB LEDの色を制御してみましょう。

コメント