【Rust】ポテンションメーターでLEDの明るさを制御する
schedule2025-12-09
schedule 約2分
💡 Summary
Raspberry PiとADCモジュールを使用し、Rustでポテンションメーターからアナログ値を読み取りLEDの明るさをPWM制御。I2C通信の実装や、スレッドを用いた効率的なソフトウェアPWM制御の具体的なコードを解説します。
概要
ポテンションメーター(可変抵抗器)を使ってLEDの明るさを制御する方法をRustで実装します。Raspberry Pi単体ではアナログ入力を扱えないため、ADC(A/Dコンバータ)モジュールを使ってアナログ値をデジタル値に変換して読み取ります。読み取った値に応じてPWM(パルス幅変調)のデューティ比を変更し、LEDの明るさを調整します。
部品
使う部品は以下の通りです。
- Raspberry Pi (40 GPIO) * 1
- GPIO Extension Board & Ribbon Cable * 1
- Breadboard * 1
- Rotary potentiometer * 1
- Resistor 10kΩ * 2
- ADC module (PCF8591 or ADS7830) * 1
- LED * 1
- Jumper Wire M/M * 17
回路
回路図については、Freenoveのドキュメントを参照してください。PCF8591またはADS7830のいずれかのADCモジュールを使用して回路を組みます。
コード
Cargo.tomlにrppalとctrlcを追加してコードを記述してください。
このコードでは、I2Cバス上のデバイス(PCF8591またはADS7830)を自動検出し、ポテンションメーターからのアナログ値を読み取ります。読み取った値を基に、別スレッドで動作するソフトウェアPWM制御によってLEDの明るさを調整しています。
// ... (コード本体は省略) ...まとめ
Rustを使ってI2C通信を行い、ADCモジュールから値を取得する方法と、その値を使ってLEDの明るさを制御するソフトウェアPWMの実装を行いました。スレッドを使ってPWM制御とメインのADC読み取りループを分離することで、スムーズな制御を実現しています。
コメントを読み込み中...