【 第46回 】Scratch2GPIOでもサーボモーターをフルスイング!

0
922

Scratch 2はPWM出力をサポートしていないので、サーボモーターの制御はScratch 1.4でしかできないと思っていましたが、別途、Scratch2GPIOというものをインストールすれば、Scratch 2でもサーボモーターが制御できることを最近、知りました。早速、インストールしてみたので紹介します。

今回使った部品

  • Raspberry Pi 3 Model B × 1
  • 40Pinフラットリボンケーブル
  • 40Pin T型GPIO拡張ボード
  • ブレットボード × 1
  • サーボモーター sg-90 × 1
  • 電源アダプター5V 2.5A × 1
  • microUSB用変換基板 × 1
  • ジャンプワイヤー(オス/オス) × 5
デジタル・マイクロサーボ SG90
梅本合同会社
売り上げランキング: 11,230
サンハヤト USB用変換基板 CK-37
サンハヤト
売り上げランキング: 36,117

実体配線図

サーボモーターSG-90の電源は、Raspberry Piの電源アダプターとは別の電源アダプターを用意し、microUSB用変換基板を介して供給します。

・モーター端子(茶色) → GND

・microUSB用変換基板(GND) → GND

・モーター端子(赤色) → microUSB用変換基板(VCC)

・モーター端子(橙色) → GPIO18 ( =物理pin番号12 )

Scratch2GPIOのインストール

OSが”RECOMMENDED SOFTWARE”なしのRASPBIAN STRETCH WITH DESKTOPの場合、Scratch2GPIOをインストールする前にScratch 2をインストールしておかなければならないので、タスクバー左端のメニューアイコンから「設定」→「Recommended Software」をクリックします。

「Recommended Software」画面が現れて、パッケージデータのダウンロードが終わったら、左ペインの「Programming」をクリックします。右ペインの「Scratch 2」のチェックボックスにチェックを入れて「OK」ボタンをクリックします。

インストールが完了したら、「OK」ボタンをクリックして閉じます。

LXTerminalを起動し、コマンド”wget”でScratch2GPIOのインストーラーをダウンロードします。

wget https://git.io/vQsDn -O isgh8dev.sh

プロンプトが返ってきたら、、インストーラーを実行します。

sudo bash isgh8dev.sh

インストール中の画面には、多くの制御ライブラリとサンプルプログラムをインストールしている過程が表示されます。インストールされるライブラリはScratchGPIOのときより増えているようです。

スタートメニューにScratch2GPIOを登録

タスクバー左端のメニューアイコンから「設定」→「Main Menu Editor」をクリックして開きます。

開いた「Main Menu Editor」画面の左ペインで「プログラミング」を選択し、右ペインの「新しいアイテム」ボタンをクリックします。

「Launcher Properties」画面が開きますが、先にデスクトップの「Scratch2GPIO8devplus」を右クリックして出てくるメニューから「ファイルのプロパティ」を選択します。

「ファイルのプロパティ」画面の項目「名前:」の入力欄の文字列を全て選択し、右クリックして出てくるメニューから「コピー」を選択します。

「Launcher Properties」画面に戻り、項目「Name:」の入力欄で右クリックして出てくるメニューから「貼り付け」を選択します。

「ファイルのプロパティ」画面に戻り、タブ「デスクトップエントリ」の項目「コマンド:」の入力欄の文字列を全て選択し、右クリックして出てくるメニューから「コピー」を選択します。

「Launcher Properties」画面に戻り、項目「Command:」の入力欄で右クリックして出てくるメニューから「貼り付け」を選択します。

「Launcher Properties」画面の「OK」ボタンをクリックして閉じます。

「Main Menu Editor」画面の「OK」ボタンをクリックして閉じます。

タスクバー左端のメニューアイコンから「プログラミング」→「Scratch2GPIO 8devplus」を右クリックして出てくるメニューから「Properties」を選択します。

開いた「ファイルのプロパティ」画面左上にあるアイコンをクリックします。

「ファイルの選択」画面が現れるので、”Scratch2″を選択して「OK」ボタンをクリックします。

「ファイルのプロパティ」画面のアイコンがScratchの猫になっているのを確認し、「OK」ボタンをクリックして閉じます。

拡張機能Scratch2GPIOを追加する

タスクバー左端のメニューアイコンから「プログラミング」→「Scratch2GPIO 8devplus」をクリックして開きます。

起動した「Scratch2GPIO 8devplus」の地球儀アイコンをクリックして現れるプルダウンメニューから、日本語を選択します。

ブロックパレットのカテゴリ「その他」を選択して「拡張機能を追加」ボタンをクリックします。

「Extension Library」画面が現れるので、”Pi GPIO”を選択して「OK」ボタンをクリックします。

Scratch2GPIOでサーボモーターを動かしてみる

ブロックパレットのブロック「set (    ) to (     )」の左側入力欄に”Servo12”を入力します。Scratch2GPIOでは、接続先をいつものGPIO番号ではなく、基板上に並んだ順の物理pin番号で指定します。

ブロック「set (    ) to (     )」の右側入力欄に”0”を入力します。

できたブロック「set (Servo12) to (0)」をブロックパレットに置いたままでクリックすると、ステージエリアの緑旗が一瞬光って、サーボモーターが回転しました。

ブロック「set (Servo12) to (0)」をスクリプトエリアに引き出します。

ブロックパレットのカテゴリ「データ」を選択して「変数を作る」ボタンをクリックします。

現れた「新しい変数」画面の入力欄に”angle”と入力して「OK」ボタンをクリックします。

ステージエリアに変数モニター「angle ( 0 ) 」が現れるので、右クリックして出るメニューから「スライダー」をクリックします。

もう一度「angle ( 0 ) 」を右クリックして出るメニューから今度は「スライダーの最小値と最大値を設定」を選択します。

現れた「スライダーの範囲」画面の項目「最小値」の入力欄を”-100”で上書きして「OK」ボタンをクリックします。

ブロック「angle」をブロック「set (Servo12) to (0)」の”(0)”に当て嵌めます。

ブロックパレットのカテゴリ「制御」を選択してブロック「ずっと」でブロック「set (Servo12) to (angle)」を抱え込みます。

ブロック「ずっと」をクリックするとサーボモーターが時計方向に90°回転しました。

ステージエリアの変数モニターのスライダーをマウスで左右に動かすとその上の数値が-100~100の間で変化し、それに連れてサーボモーターが回転します。

GPIO出力のリセット

ブロックパレットのカテゴリ「その他」のブロック「set gpio (     ) to (output high ▼)」の”(     )”内に”12″を入力します。

ブロック「set gpio (12) to (output high ▼)」の”▼”をクリックして出てくるメニューから”input”を選択します。

できたブロック「set gpio (12) to (output high ▼)」をブロックパレットに置いたままでクリックすると、ステージエリアの緑旗が一瞬光ります。

念の為、このコマンドでGPIOの設定状況を確認します

gpio readall

GPIO18(=物理pin番号12)の設定が既定の”IN”に戻っていることが確認できました。

<<【第45回】【第47回】>>