今回使った部品
- Raspberry Pi 3 Model B × 1
- 40Pinフラットリボンケーブル
- 40Pin T型GPIO拡張ボード
- ブレットボード × 1
- サーボモーター sg-90 × 1
- 電源アダプター5V 2.5A × 1
- microUSB用変換基板 × 1
- ジャンプワイヤー(オス/オス) × 5
実体配線図
サーボモーターSG-90の電源は、Raspberry Piの電源アダプターとは別の電源アダプターを用意し、microUSB用変換基板を介して供給します。
・モーター端子(茶色) → GND
・microUSB用変換基板(GND) → GND
・モーター端子(赤色) → microUSB用変換基板(VCC)
・モーター端子(橙色) → GPIO12
前回のスクリプトを開いて実行してみる
「Scratch 1.4」を起動し、メニューバーから「編集」→「GPIOサーバーを開始」をクリックします。
メニューバーから「ファイル」→「開く…」をクリックします。
前回【第21回】で保存したスクリプトを選択して「OK」ボタンをクリックします。
開いたスクリプトで、ステージ左上の変数モニター「angle」のスライダーをマウスで左端に寄せておきます。
ブロック「ずっと」をクリックすると、一旦、時計方向に90°回転し、変数「angle」が”150″くらいで更に時計方向に90°回転したかと思っていたら、今度は”245″ぐらいで一気に半時計方向に180°回転して止まりました。
電源を強化することで、SG-90の仕様通り180°回転するようにはなりましたが、変数「angle」と回転角の相関がぜんぜん分かりません。
回転角をキーボードで操作するスクリプトに組み替える
ステージ左上の変数モニター「angle」をクリックして出てくるメニューから「スライダーの最小値と最大値を設定」を選択します。
現れた「スライダの範囲:」画面の「最小値:」を”80″、「最大値:」を”260″で上書きし、「OK」ボタンをクリックします
カテゴリー「制御」のブロック「もし< >なら 」をスクリプトエリアに引き出します。
カテゴリー「調べる」のブロック「スペース▼キーが押された」をブロック「もし< >なら 」の”< >”に当て嵌めます。
ブロック「ずっと」の内側にあるブロック「angle▼を1ずつ変える 」を引き出します。
引き出したブロック「angle▼を1ずつ変える 」をブロック「もし<スペース▼キーが押された>なら」の内側に抱え込ませます。
ブロック「ずっと」の内側にあるブロック「0.1秒待つ 」を引き出します。
引き出したブロック「0.1秒待つ 」をブロック「angle▼を1ずつ変える」の下に割り込ませます。
できたブロック「もし<スペース▼キーが押された>なら」を右クリックして複製します。
複製した2つのブロック「もし<スペース▼キーが押された>なら」を繋げます。
上側のブロック「もし<スペース▼キーが押された>なら」の”▼”をクリックして出てくるメニューから「左向き矢印」を選択します。
下側のブロック「もし<スペース▼キーが押された>なら」の”▼”をクリックして出てくるメニューから「右向き矢印」を選択します。
下側のブロック「もし<右向き矢印▼キーが押された>なら」の内側にあるブロック「angle▼を1ずつ変える」の”1″を”-1″で上書きします。
できたスクリプトを元のブロック「ずっと」の内側に戻します。
スクリプトエリアのブロック「ずっと」を右クリックして実行します。
キーボードでの左右矢印キーで変数「angle」を上下するとグググっと苦しそうに振動しながら回転することはするのですが、時計方向と反時計方向では同じ「angle」でも回転角が一致せず、上下限ギリギリ近くになって一気に回転します。グググっと振動しなくなる下限が”84″で上限は”253″でした。トータルの回転角度は210°ありました。
ステージ右上の?ボタンをクリックしてスクリプトを止めます。
メニューバーの「ファイル」→「保存する」をクリックしてスクリプトを上書きしておきます。