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

1. 説明

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

2. 動作原理

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

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

3. 配線図

4. テストコード

ポテンショメーターのアナログ値を読み取る方法:

  1. 基本ブロックを2つドラッグし、その間にボーレート設定ブロックを置き、9600に設定します。

  2. 「forever」ループ内に「serial print」ブロックを追加し、印刷モードを「warp」に設定します。

  3. 「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)」関数が必要です。

配線図:

  1. 基本ブロックを2つドラッグします。

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

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

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

完成コード:

7. コード説明

  1. map関数。アナログ値の範囲を0〜4095から0〜255に変換します。

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