FabshopマイコンRaspberry PiRaspPi電子工作プログラミングScratchScratch 2のGPIO制御スターターキット電子工作 【 第21回 】Scratch 1.4でサーボモーターを動かしたときの挙動を確認してみた から fabama - 2018-07-10 0 2535 FacebookTwitterPinterestWhatsApp 今回は、Scratch 1.4のPWM出力でサーボモーターがどのような動きを見せるか確認してみようと思います。 今回使った部品 Raspberry Pi 3 Model B × 1 40Pinフラットリボンケーブル 40Pin T型GPIO拡張ボード ブレットボード × 1 サーボモーター sg-90 × 1 ジャンプワイヤー(オス/オス) × 3 デジタル・マイクロサーボ SG90posted with amazlet at 18.07.10梅本合同会社 売り上げランキング: 11,230Amazon.co.jpで詳細を見る 実体配線図 サーボモーター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」ボタンをクリックします。 <<【第20回】|【第22回】>>