めちゃくちゃ久しぶりの書き込みです。
たまたま、家の玄関の電灯を制御しているサーボの動作に異変が起きたので、サーボモーターを交換しました。
とは言え全く動かなくなった訳ではないので、別のRaspberry piに接続して動きを見ようと思いました。が、新たにダウンロードした Raspbian にServoBlaster が上手くインストール出来ません。
で、色々調べた結果かなり前に開発が停止して全くメンテナンスされておらず、最新のOSでは動作不能という結論に達しました。我が家のサーバーは特に必要もないので古いOSのままで運用しているので問題はないのですが、一応最新版ではどうすれば良いのかだけ調べておきました。
結論方言えば、Python でプログラムを書けば良いだけの話でした。私の場合 iPhone を使用しているので HomeBridge とシェルで利用していたのでサーボのコントロール部分だけ Python にしてそこを呼べば良い様です。まっ、今の所新しいOSに載せ替える気もないのでそのまましばし放置する予定ですが、備忘録として Python からの制御の仕方を書いておきます。
先ずはこんな形で必要なライブラリの読み込みなどを行なっておきます。
import RPi.GPIO as GPIO
from time import sleep
servo1 = 17 ← 単純にサーボを接続するGPIOのピン番号を定義しておきます。
servo2 = 18 ← 同上
frequency = 50 ← サーボへのPWD信号の周波数を設定
angle_0 = 2.5 /20 * 100 #duty: 12.5% ← 角度をPWMのDuty比で定義する。
angle_90 = 1.5 /20 * 100 #duty: 7.5% ライブラリにして角度を算出した方が実用的でしょうけれど、
angle_180 = 0.5 /20 * 100 #duty: 2.5% 私の場合今回はあくまでテストなので。
GPIO.setmode(GPIO.BCM)
GPIO.setup(servo1, GPIO.OUT) ← 出力ピンの数(サーボの数)だけ定義する。
GPIO.setup(servo2, GPIO.OUT)
pwm1 = GPIO.PWM(servo1, frequency) ← サーボと出力先を紐付ける。
pwm2 = GPIO.PWM(servo2, frequency)
pwm1.start(angle_90) ← 初期位置を設定する。
pwm2.start(angle_180)
pwm1.start(angle_90) ← こんな感じで適時サーボの角度を設定する。
pwm2.start(angle_0)
pwm1.stop() ← 最後に解放して終わり。
pwm2.stop()
GPIO.cleanup()
コメント
コメントを投稿