記事ディレクトリ
序文
前回の記事では、Raspberry PiのLEDライトを点灯させ、1秒間隔で点滅させる方法を紹介しました。デビューしてみませんか!Raspberry PiのLEDライトを光らせる簡単で詳しい方法_☞ブラックハートキャロットスリーストライプス☜のブログ - CSDN Blog。今回は呼吸ランプの作り方を紹介します。
PWM の概要
PWMはパルス幅変調の略称です。STM32 と同様に、Raspberry Pi は、モーターの速度と方向、LED の明るさなどの制御など、PWM 出力を通じて電子コンポーネントを制御することもできます。
Raspberry Pi の PWM 出力は、通常、GPIO (汎用入力/出力) ピンを通じて実装されます。Raspberry Pi には、GPIO18、GPIO19 など、PWM 出力専用の GPIO ピンがいくつかあります。Raspberry Pi Linux システムでは、GPIO ドライバーと関連ライブラリ関数を使用して PWM 出力を制御し、電子コンポーネントを制御するという目的を達成できます。
Raspberry Pi システムは、ソフトウェア PWM とハードウェア PWM の 2 つの実装方法をサポートしています。ソフトウェア PWM はプログラムを通じて PWM 信号をシミュレートするもので、実装は比較的シンプルで柔軟ですが、精度は比較的低くなります。ハードウェアPWMはRaspberry Pi上の専用PWMコントローラによって実装されており、高精度で安定性が良いという特徴がありますが、専用のGPIOピンを使用する必要があり、制御が複雑で機能も比較的限られています。
LED輝度のPWM制御を実装
Python は非常に人気のある高水準プログラミング言語であり、多くの Raspberry Pi プロジェクトで一般的に使用されるプログラミング言語の 1 つです。RPi.GPIO ライブラリを使用して GPIO 制御を実装できます。
回路図上で LED の接続をシミュレートすると、次のような効果図が得られます。
以下は、Python 言語に基づいて PWM 信号出力を実装する詳細な手順です。
-
- Raspberry Pi ピンのエンコード方法を設定し、PWM オブジェクトをインスタンス化します。
# 设置编码方式
GPIO.setmode(GPIO.BCM)
# 设置GPIO引脚
GPIO.setup(GPIO_Pin, GPIO.OUT)
# 实例化PWM对象
pwmObject = GPIO.PWM(GPIO_Pin, frequency)
-
- PWMを開始します。
pwmObject.start(10)
-
- 関数
ChangeDutyCycle()
を使用して PWM デューティ サイクルを変更し、LED ライトが最初に徐々に点灯し、その後暗くなり続けるようにします。
- 関数
-
- PWM 出力が必要ない場合は、関数を呼び出して
stop()
PWM 出力を停止できます。
- PWM 出力が必要ない場合は、関数を呼び出して
以下は完全なソースコードです。
def pwmControlLed(GPIO_Pin: int, frequency: int):
"""
使用PWM控制LED呼吸灯
:param GPIO_Pin: 可控制的引脚
:param frequency: PWM的频率
:return:
"""
# 设置编码方式
GPIO.setmode(GPIO.BCM)
# 设置GPIO引脚
GPIO.setup(GPIO_Pin, GPIO.OUT)
# 实例化PWM对象
pwmObject = GPIO.PWM(GPIO_Pin, frequency)
# 启动PWM
pwmObject.start(0)
try:
while True:
for dc in range(0, 101, 5):
pwmObject.ChangeDutyCycle(dc)
time.sleep(0.05)
for dc in range(100, -1, -5):
pwmObject.ChangeDutyCycle(dc)
time.sleep(0.05)
except KeyboardInterrupt:
pass
# 停止PWM
pwmObject.stop()
GPIO.cleanup()
結果と分析
この LED 輝度の PWM 制御の例では、PWM を使用して呼吸する光の効果を実現することで、LED の輝度が一定の範囲内で滑らかに変化することがわかります。PWM デューティ サイクルを変更することにより、LED の明るさによって、暗い状態から明るい状態へ、そして再び暗い状態へ戻るブリージング効果を実現できます。
Raspberry Piで呼吸ランプを作る
PWM を使用して LED 輝度を制御する場合、より安定した効果を得るためにハードウェア PWM を使用することをお勧めします。同時に、ソフトウェア PWM を使用する場合は、PWM 出力の安定性と精度への影響を避けるために、CPU 負荷と精度の問題を考慮する必要があります。
最後に、PWM コントローラーを使用する場合は、不安定な出力による電子部品の損傷を避けるために、コントローラーの出力周波数や振幅などのパラメーターに注意することをお勧めします。