【 第21回 】Scratch 1.4でサーボモーターを動かしたときの挙動を確認してみた

0
1684

今回は、Scratch 1.4のPWM出力でサーボモーターがどのような動きを見せるか確認してみようと思います。

今回使った部品

  • Raspberry Pi 3 Model B × 1
  • 40Pinフラットリボンケーブル
  • 40Pin T型GPIO拡張ボード
  • ブレットボード × 1
  • サーボモーター sg-90 × 1
  • ジャンプワイヤー(オス/オス) × 3
デジタル・マイクロサーボ SG90
梅本合同会社
売り上げランキング: 11,230

実体配線図

サーボモーターSG-90の端子はジャンプワイヤーのメス端子なので、ブレッドボードには(オス/オス)のジャンプワイヤーで接続します。

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

・モーター端子(赤色) → 5V

・モーター端子(橙色) → GPIO12

GPIOに影響する音声出力を無効にしておく

ファイルマネージャを起動すると”/home/pi”が開いているので、「↑」ボタンをクリックします。

左ペインの”boot”をクリックします。

右ペインの”config.txt”を右クリックして出てくるメニューから「アプリケーションで開く」を選択します。

「アプリケーションの選択」画面が現われるので、タブ「コマンドラインを指定」をクリックします。

項目「実行するコマンドライン:」の入力欄に”sudo nano”、項目「アプリケーションの名前」の入力欄に”nano”を入力する。

「端末エミュレータで実行する」と「コマンドの実行が終わっても端末のウィンドウを開いておく」のチェックボックスにチェックを入れ、「OK」ボタンをクリックします。

“config.txt”の編集画面が開くので「↓」キーでカーソルを下に送り、「dtparam=audio=on」の行頭に”#”を入力して、コメントアウトします。

「Ctrl」+「o」キーで書き込みすると、下の方に「書き込むファイル:/boot/config.txt」と表示されるので、「Enter」キーを押して上書きします。

下の方に「**行を書き込みました」と表示されるので、「Ctrl」+「x」キーを押して閉じます。

再起動して、タスクバーの「スピーカー」アイコンを右クリックすると、”No audio devices found”と表示されることを確認します。

Scratch 1.4で変数「angle」を作る

「Scratch 1.4」を起動し、メニューバーから「編集」→「GPIOサーバーを開始」をクリックします。

カテゴリー「変数」のボタン「新しい変数を作る」をクリックします。

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

ブロックパレットに新しいブロックが5つできると共に、画面右上のステージにも「angle ( 0 ) 」の表示が現れるので、右クリックして出るメニューから「スライダー」をクリックします。

もう一度、「angle ( 0 ) 」をクリックすると、メニューに「スライダーの最小値と最大値を設定」ができているので、これをクリックします。

現れた「スライダの範囲:」画面の「最大値:」に”180″と入力して「OK」ボタンをクリックします

GPIO12の出力を変数「angle」に結び付ける

カテゴリー「演算」のブロック「 ( ハロー ) と ( ワールド ) 」の”ハロー”をクリックします。

ブロック「 ( ハロー ) と ( ワールド ) 」の”ハロー”を”gpio12pwm”で上書きします。

ブロック「 ( gpio12pwm ) と ( ワールド ) 」をスクリプトエリアにドラッグアンドドロップします。

カテゴリー「変数」のブロック「angle」をブロック「 ( gpio12pwm ) と ( ワールド ) 」の”( ワールド )”に当て嵌めます。

カテゴリー「制御」のブロック「 (  ▼ ) を送る」をスクリプトエリアに引出します。

ブロック「 (  ▼ ) を送る」の”(  ▼ )”に、ブロック「 ( gpio12pwm ) と ( angle ) 」を当て嵌めます。

カテゴリー「制御」のブロック「ずっと」で、ブロック「{ ( gpio12pwm ) と ( angle ) }を送る」を包み込みます。

スクリプトを実行してみる

ブロック「ずっと」をクリックしてスクリプトを実行します。

ステージの変数モニター「angle」のスライダーをマウスで右方向へ少しづつ動かすと”90″からサーボモーターが動き始めました。

スライダーを突き当たりの”180″まで動かしてもサーボモーターの回転は180°になりませんでした。

変数「angle」の最大値を変更する

もう一度、変数モニター「angle」をクリックして「スライダーの最小値と最大値を設定」を選択します。

現れた「スライダの範囲:」画面の「最大値:」に”1023″と入力して「OK」ボタンをクリックします。

カテゴリー「変数」のブロック「 ( 1 ) 秒待つ」をブロック「 ( gpio12pwm ) と ( angle ) 」の下に割り込ませます。

カテゴリー「変数」のブロック「 ( angle▼ ) を ( 1 ) ずつ変える」をブロック「 ( 1 ) 秒待つ」の下に割り込ませます。

ブロック「 ( 1 ) 秒待つ」の”1″を”0.1″で上書きします。

もう一度、スクリプトを実行してみる

ブロック「ずっと」をクリックしてスクリプトを実行すると、変数モニター「angle」の値が少しずつ増えていきます。

変数モニター「angle」の値が”90″からサーボモーターがゆっくり回転を始め”250″で回転が止まってしまいました。

変数「angle」の範囲を変更して回転角度を確認する

再び、変数モニター「angle」をクリックして「スライダーの最小値と最大値を設定」を選択します。

現れた「スライダの範囲:」画面の「最小値:」に”90″「最大値:」に”250″と入力して「OK」ボタンをクリックします。

変数モニター「angle」のスライダーをマウスで左端に寄せておきます。

ブロック「ずっと」をクリックすると、一旦、時計方向に90°回転し、そこからゆっくり回転して元の角度で止まりました。

SG-90の仕様では、180°回転するはずなのですが・・・

スクリプトを保存しておく

メニューバーの「ファイル」→「名前をつけて保存」をクリックします。

画面上中央に選択したフォルダが表示されていることを確認し、「新しいファイル名」の入力蘭にファイル名を入力して「OK」ボタンをクリックします。