Raspberry Pi で python で PWM

Raspberry Pi 上で python で PWMの制御を行うブログラムの雛形

概要

Raspberry Piでロボットアームを制御するのに、PWMのテストを行ったときのプログラムソースを貼っておく。
使ったロボットアーム: https://www.amazon.co.jp/gp/product/B00YTLTIJ0/ref=ppx_yo_dt_b_asin_title_o04_s00?ie=UTF8&psc=1

ソフトウェアPWMだと他の処理の負荷によってジッタが発生し、ガタガタいうのでこの使い方はあまり実用的ではない。
ハードウェアPWMを使う(pigpio か wiringpi が必要)、PWM制御を担うMCUを用意してコマンド通信(TCP/IPやBluetoothなど経由)で制御するのが現実的かも。

準備

PRi.GPIOを使うので、インストールしておく。

pip install RPi.GPIO

プログラムの設定にあわせてGPIOとサーボモータを接続しておく(または接続に合わせてプログラム修正)。
スイッチで調整できるようにしてあるけど、キーボードから調整できるのでスイッチの接続は必須ではない。

プログラム

[!NOTE] GPIO.add_event_detect()にはbouncetime=«チャタリング除去時間(msec)»を追加しておくのが良いかも。
参考: GPIOエッジ検出コールバック関数 | TomoSoft

[!NOTE] 公式マニュアルは存在しないらしい。
唯一以下のページがそれっぽい情報を掲載している。
raspberry-gpio-python / Wiki / Examples
あとはソース読むしかないんだけど、python - C インタフェースを理解してないと苦しい…
ソース全体をpython functionで検索すると出てくるけど全部じゃない…
ソースはここ: RPi.GPIO · PyPI

実行

プログラム実行して、スイッチかキーボードで出力値変えてみる。
設定値の範囲は個体差があるので、適当に変更必要。