私はずっとWindowsの世界で生きてきたので、Linux系のOSには馴染みがありません。また電子回路も素人なので、間違った記載があるかもしれません。あらかじめご了承ください。
なんの変哲もないLチカサンプルです。PWM制御でLEDの明るさを抑えています。
GPIO制御用にはpigpioライブラリを使用しています。最初、RPi.GPIOを使用して作ったのですが、チラツキが発生したので使用するライブラリをpigpioに変更したところ、チラツキが抑えられていい感じになりました。
ソフトウェアでPWM制御を行っているRPi.GPIOに対して、ハードウェアで制御を行っているpigpioの方が高精度な動作を実現しているものだと思われます。たぶん。
- プログラムを実行すると1秒間隔でLEDが点滅します
- PWM制御でLEDの明るさを変更しています
- Ctrl+Cで停止します
- Raspberry Pi 4 Model B 4GB
- 抵抗入りLED
- ブレッドボード
- ジャンプワイヤー2本
- GPIO26 (Pin#37) -> LEDアノード
- GND (Pin#39) -> LEDカソード
screencast.mp4
- Raspberry Pi 4 Model B 4GB
- Raspberry Pi OS 64bit bullseye
- Python 3.9.17
- pigpio 1.78
- Thonny 4.0.1(ラズパイプリインストール)
- pyenv 2.3.24
pigpio を利用するにはあらかじめ pigpio をインストールし、デーモンを起動しておく必要があります。また、Python用のライブラリもインストールする必要があります。Python用のライブラリは sudo apt python3-pigpio
でもインストールできますが、pyenv を使っている環境では下記のように別途インストールしてください。
sudo apt update
sudo apt install pigpio
sudo pigpiod
pip install pigpio
OS起動時にデーモンを自動起動させたい場合は、次のようして pigpiod デーモンを有効にします。
sudo systemctl enable pigpiod
こうすることで次回起動時に pigpiod が起動されますが、すぐに起動したい場合は、続けて次のコマンドを実行します。
sudo systemctl start pigpiod
私の環境だけかもしれませんがラズパイのOSが32bitの場合、動作が安定しない現象が発生しました。
具体的には、本来はLEDがゆっくり点滅するプログラムのはずが、異常に早く点滅するようになりました。プログラム中のsleepも効いていない感じです。原因はわかりませんが、明らかにおかしい感じです。
そういった場合は、/etc/rc.local
ファイルに以下の行を追加することでも pigpiod を自動起動できます。
/usr/bin/pigpiod
追加する場所は、ファイル末尾の exit 0
の直前でOKです。
ただし最近は、このやり方は推奨されていないみたいです。
ラズパイのターミナルを開き、プログラムをクローンしたいディレクトリに移動し、次のコマンドを実行します。
git clone https://github.com/led-mirage/Raspi4-LEDBlink-pigpio.git
pigpiodデーモンを起動後、以下のコマンドを実行するとプログラムが開始しLEDが点滅し始めます。
python led.py
ターミナルで「Ctrl + C」を押すとプログラムが停止します。
お疲れ様でした。
- ファーストリリース