【第35回】で「サーボモーターをフルスイング」させたGPIO制御ライブラリ”Gpiozero”にはサーボモーターの回転を任意の角度で指定する関数”AngularServo”もあります。今回はこの関数を使って180°のフルスイングをさせてみたいと思います。
今回使った部品
- Raspberry Pi 3 Model B × 1
- 40Pinフラットリボンケーブル
- 40Pin T型GPIO拡張ボード
- ブレットボード × 1
- サーボモーター SG90 × 1
- 電源アダプター5V 2.5A × 1
- microUSB用変換基板 × 1
- ジャンプワイヤー(オス/オス) × 5
実体配線図
回路は【第25回】と同じで、サーボモーターSG-90の電源は、Raspberry Piの電源アダプターとは別の電源アダプターを用意し、microUSB用変換基板を介して供給します。
・モーター端子(茶色) → GND
・microUSB用変換基板(GND) → GND
・モーター端子(赤色) → microUSB用変換基板(VCC)
・モーター端子(橙色) → GPIO12
"AngularServo"でサーボモーターをフルスイングさせる
Visual Studio Codeを起動し、【 第35回 】で作ったプログラム”gpiozero_servo_full.py”を開きます。
【 ワークスペースの設定 】で設定したワークスペース”/home/pi/Python”が開くので、「名前」の入力欄に新しいプログラム名を入力して「保存」ボタンをクリックします。
ターミナル画面で「↑」キーを押すと、直前のコマンドが入力されるので、もう一度、実行します。
今度はちゃんと90°から-90°まで180°のフルスイングをさせることができましたが、90°が反時計方向で、-90°は時計方向の回転になっていることとsleep時のジャダーが残念でした。
from gpiozero import AngularServo from time import sleep pig = AngularServo(12, mini_pulse_width=0.5/1000, max_pulse_width=2.4/1000) counter = 0 while (counter < 3): pig.angle = 90 sleep(3) pig.angle = 0.0 sleep(3) pig.angle = -90 sleep(3) pig.angle = 0.0 sleep(3) counter = counter + 1
コマンド”pigs mg”で設定状態を確認します。
返ってきた値”0″は、pigpio libraryによると”Input”を示しているので、既定通りの設定に戻っていることが確認できました。