Python と Raspberry Pi を使用して呼吸ランプを作成する詳細なチュートリアルで創造力を磨きましょう

序文

  前回の記事では、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 の接続をシミュレートすると、次のような効果図が得られます。
画像-20230620121930339

  以下は、Python 言語に基づいて PWM 信号出力を実装する詳細な手順です。

    1. Raspberry Pi ピンのエンコード方法を設定し、PWM オブジェクトをインスタンス化します。
    # 设置编码方式
    GPIO.setmode(GPIO.BCM)
    # 设置GPIO引脚
    GPIO.setup(GPIO_Pin, GPIO.OUT)
    # 实例化PWM对象
    pwmObject = GPIO.PWM(GPIO_Pin, frequency)
    1. PWMを開始します。
    pwmObject.start(10)
    1. 関数ChangeDutyCycle()を使用して PWM デューティ サイクルを変更し、LED ライトが最初に徐々に点灯し、その後暗くなり続けるようにします。
    1. PWM 出力が必要ない場合は、関数を呼び出してstop()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 コントローラーを使用する場合は、不安定な出力による電子部品の損傷を避けるために、コントローラーの出力周波数や振幅などのパラメーターに注意することをお勧めします。

おすすめ

転載: blog.csdn.net/qq_53960242/article/details/131367342