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

本質的に、ポテンショメーターは抵抗値を変化させる部品です。オームの法則(U=I*R)により、抵抗は電圧に影響を与えます。今回のポテンショメーターは10Kです。
このプロジェクトでは最大抵抗が10Kです。ESP32ボードは3Vの電圧を4095分割(3/4095=0.0007326007326)し、読み取った値に0.0007326007326を掛けることでアナログ電圧を得ます。
3. 配線図

4. テストコード
ポテンショメーターのアナログ値を読み取る方法:
基本ブロックを2つドラッグし、その間にボーレート設定ブロックを置き、9600に設定します。
「forever」ループ内に「serial print」ブロックを追加し、印刷モードを「warp」に設定します。
「pot」から「read the value」をドラッグしてserial printに接続し、ピンをIO33に設定します。

5. テスト結果
配線を接続しコードをアップロード後、シリアルモニターを開いてボーレートを9600に設定すると、アナログ値が0〜4095の範囲で表示されます。

6. 拡張コード
ポテンショメーターでLEDの明るさを制御します。ご存知の通り、PWMに影響されます。ただし、アナログ値の範囲は0〜4095で、PWMの範囲は0〜255です。したがって、「map(value, fromLow, fromHigh, toLow, toHigh)」関数が必要です。
配線図:

基本ブロックを2つドラッグします。
変数ブロックを追加し、ローカルに設定します。型は「int」を選び、名前を「pot」とします。

「Data」から「map」関数をドラッグし、代入位置に置きます。mapの値を「pot IO33の値を読み取る」に設定し、範囲を(0,4095)から(0,255)に変換します。

最後に「LED analogWrite」ブロックを追加し、ピンをIO25、アナログ値を変数「pot」に設定します。

完成コード:

7. コード説明
map関数。アナログ値の範囲を0〜4095から0〜255に変換します。

ポテンショメーターのピンを設定してアナログ値を読み取ります。
