【第33回】では、GPIO制御ライブラリ”pigpio”のハードウェアPWMを発生させる関数”hardware_PWM”を使って「サーボモーターをフルスイング」させましたが、今回は、別のGPIO制御ライブラリ”Gpiozero”で同じことをしてみたいと思います。ライブラリによる書式や終了時のふるまいの違いに注目してください。
今回使った部品
- 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
Gpiozeroのインストール状況を確認する
"Gpiozero"でサーボモーターをフルスイングさせる
Visual Studio Codeを起動し、【 第33回 】で作ったプログラム”pigpio_h_ware_servo.py”を開きます。
【 ワークスペースの設定 】で設定したワークスペース”/home/pi/Python”が開くので、「名前」の入力欄に新しいプログラム名を入力して「保存」ボタンをクリックします。
18,19,20行目も不要なので、行頭に”#”を入力してコメントアウトします。
左ペインの”pigpio_h_ware_servo.py”と比べると、とてもシンプルな書式になっています。
from gpiozero import Servo from time import sleep pig = Servo(12) counter = 0 while (counter < 3): pig.min() sleep(3) pig.mid() sleep(3) pig.max() sleep(3) pig.mid() sleep(3) counter = counter + 1 #pig.hardware_PWM(12, 50, 0) #pig.ser_mode(12, pigpio.INPUT) #pig.stop()
GPIO12の設定を既定に戻しておく
GPIOの設定状況を確認します。
今回は、Python上で特に終了処理をしていないのですが、GPIO12の設定がちゃんと”IN”に戻っていました。大変、お行儀のいいライブラリです。
gpio readall
コマンド”pigs mg”でも、設定状態が確認できます。
返ってきた値”0″は、pigpio libraryによると”Input”を示しているので、既定通りであることが確認できます。