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