今回使った部品
- 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"のパルス幅を指定してサーボモーターをフルスイングさせる
Visual Studio Codeを起動し、【 第34回 】で作ったプログラム”pigpiozero_servo.py”を開きます。
メニューバーから「ファイル」→「名前を付けて保存」をクリックします。
【 ワークスペースの設定 】で設定したワークスペース”/home/pi/Python”が開くので、「名前」の入力欄に新しいプログラム名を入力して「保存」ボタンをクリックします。
右ペインの4行目の”Servo(12)”を削除して、”s”と入力すると、入力候補が現れるので、「↓」キーを押して”Servo”を選択すると右側に「i」ボタンが現れるのでクリックします。
「i」をクリックすると入力候補の右に”Servo”のパラメーター一覧が表示され、その中に”min_pulse_width”と”max_pulse_width”があることが確認できました。確認できたら、「Enter」キーを押して”Servo”を選択します。
自動入力される”()”内に”12,(半角スペース)m”と入力すると入力候補が表示されるので、「↓」キーを押して”min_pulse_width”を選択して「Enter」キーを押します。
“min_pulse_width”を選択すると、続けて既定値の”=1/1000(1msec.)”が自動的に入力されてしまいますが、サーボモーターSG90の時計方向の最小パルス幅:”=0.5/1000″で上書きします。
続けて、”,(半角スペース)m”と入力すると、入力候補が現れるので、「↓」キーを押して”max_pulse_width”を選択し、「Enter」キーを押します。
“max_pulse_width”を選択すると、続けて既定値の”=2/1000(2msec.)”が自動的に入力されてしまいますが、サーボモーターSG90の反時計方向の最大パルス幅:”=2.4/1000″で上書きします。
17,18,19,20行目は”Gpiozero”には不要なので、全体を選択し、右クリック→「切り取り」を選択します。
“Gpiozero”は終了処理も不要なので、更にシンプルなプログラムになりました。
from gpiozero import Servo from time import sleep pig = Servo(12, min_pulse_width=0.5/1000, max_pulse_width=2.4/1000) counter = 0 while (counter < 3): pig.min() sleep(3) pig.mid() sleep(3) pig.max() sleep(3) pig.mid() sleep(3) counter = counter + 1
アクティビティーバーの「デバッグ」アイコンをクリックします。
サイドバーに現れたデバッグ右の「▶」ボタンをクリックします。
1行目でデバッグが中断するので、画面上部デバッグ用ツールバーの「↓」ボタンをクリックして続行します。
デバッグが終わったら、統合ターミナルのタブ「問題」をクリックします。
何故か今回は”イチャモン”が付きましたが、”エラー”ではないので、右ペインのエディター画面の何もないところで右クリック→「Run Python File in Terminal」をクリックします。
今度は、スイングの中央(mid)から時計方向に105°、反時計方向に75°回転しましました。合計では180°回転しましたが、中心は15°ズレています。これもGpiozeroの仕様なのでしょうか?
メニューバーから「ファイル」→「保存」をクリックして上書き保存します。
GPIO12の設定を確認する
コマンド”pigs mg”で設定状態を確認します。
返ってきた値”0″は、pigpio libraryによると”Input”を示しているので、既定通りの設定に戻っていることが確認できました。
pigs mg 12