Scriptone Scriptone

【Rust】ポテンションメーターでLEDの明るさを制御する

blog-image

💡 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.tomlrppalctrlcを追加してコードを記述してください。

このコードでは、I2Cバス上のデバイス(PCF8591またはADS7830)を自動検出し、ポテンションメーターからのアナログ値を読み取ります。読み取った値を基に、別スレッドで動作するソフトウェアPWM制御によってLEDの明るさを調整しています。

// ... (コード本体は省略) ...

まとめ

Rustを使ってI2C通信を行い、ADCモジュールから値を取得する方法と、その値を使ってLEDの明るさを制御するソフトウェアPWMの実装を行いました。スレッドを使ってPWM制御とメインのADC読み取りループを分離することで、スムーズな制御を実現しています。

参考リンク

comment

コメントを読み込み中...