この記事をシェアしよう!

今回は、外部デバイスからの入力でScratchのスクリプトを制御する最もシンプルな事例として、タクトスイッチによるLEDのon/off制御を紹介します。

今回使った部品

  • Raspberry Pi 3 Model B × 1
  • 40Pinフラットリボンケーブル
  • 40Pin T型GPIO拡張ボード
  • ブレットボード × 1
  • LED × 1
  • 抵抗 220Ω × 1
  • タクトスイッチ
  • ジャンプワイヤー(オス/オス) × 4

実体配線図

Raspberry Piとブレッドボードは【第2回】で紹介したT型GPIO拡張ボードで接続します。

LEDの回路は【第3回】から全く変わっていません。(見やすくする為にジャンプワイヤーの色を変更しました)

それに加えて今回は、3,3Vの電源とGPIO4番端子の間にタクトスイッチを配線しています。タクトスイッチの回路は右図の通りで、上から見て横に並んだ端子間のon/offがスイッチを押す度に切り替わります。

GPIO4番ピンを入力端子に設定する

【第4回】のときと同じように「Scratch 1.4」を起動してGPIOサーバーを開始しておきます。

カテゴリー「制御」のブロック「 ( ▼ ) を送る」の”▼”をクリックして出る「新規/編集」をクリックすると「メッセージの名前:」画面が現れるので、入力欄に”config4inputpulldown”と入力し、「OK」ボタンをクリックします。

できたブロック「 ( config4inputpulldown▼ ) を送る」を一度クリックすることで、GPIO4番ピンの入力端子設定が完了します。設定ができたらブロックをスクリプトエリアに引き出しておきます。

変数モニターでタクトスイッチの動作を確認する

カテゴリー「調べる」のブロック「 ( スライダー▼ ) センサーの値」の”▼”をクリックして出るメニューに”gpio4″ができているのでクリックします。

できたブロック「 ( gpio4▼ ) センサーの値」のチェックボックスにチェックを入れます。

画面右上のステージに「 gpio4センサーの値 (0) 」の変数モニターが表示されます。

タクトスイッチを押さないときは「 gpio4センサーの値 (0) 」が”0″のままですが、タクトスイッチを押したときだけ”1″になることを確認しておきます。

タクトスイッチを押しても”1″にならない場合は、配線をもう一度、チェックしてください。

演算条件ブロックを組立てる

ブロック「 ( gpio4▼ ) センサーの値」をスクリプトエリアに引き出します。

カテゴリー「演算」のブロック「< ( ) = ( ) >」をスクリプトエリアに引出します。

ブロック「 ( gpio4▼ ) センサーの値」をブロック「< ( ) = ( ) >」の左側の”( )”に当て嵌めます。

カテゴリー「演算」のブロック「< ( gpio4▼センサーの値 ) = ( ) >」の右側の”( )”をクリックして”1″を入力します。

ブロック「もし< >なら「」でなければ「」」をスクリプトエリアに引き出します。

ブロック「もし< >なら「」でなければ「」」の”< >”にブロック「< ( gpio4▼センサーの値 ) = ( 1 ) >」を当て嵌めます。

ブロック「もし< ( gpio4▼センサーの値 ) = ( 1 ) >なら「」でなければ「」」をブロック「ずっと」の内側に抱え込ませます。

GPIO17番ピンの出力を設定する

カテゴリー「制御」のブロック「 ( config4inputpulldown▼ ) を送る」の”▼”をクリックして出る「新規/編集」をクリックすると「メッセージの名前:」画面が現れるので、入力欄に”config17out”と入力し、「OK」ボタンをクリックします。

ブロック「 ( config17out▼ ) を送る」をスクリプトエリアに引き出してブロック「ずっと」の上に繋ぎます。

ブロック「 ( config17out▼ ) を送る」の”▼”をクリックして出る「新規/編集」をクリックすると「メッセージの名前:」画面が現れるので、入力欄に”gpio17on”と入力し、「OK」ボタンをクリックします。

ブロック「 ( gpio17on▼ ) を送る」をブロックパレットに置いたままクリックすると、LEDが点灯することを確認しておきます。

ブロック「 ( gpio17on▼ ) を送る」をスクリプトエリアに引き出し、ブロック「もし< ( gpio4▼センサーの値 ) = ( 1 ) >なら「」でなければ「」」の上側の凹に当て嵌めます。

カテゴリー「制御」のブロック「 ( gpio17on▼ ) を送る」の”▼”をクリックして出る「新規/編集」をクリックすると「メッセージの名前:」画面が現れるので、入力欄に”gpio17off”と入力し、「OK」ボタンをクリックします。

ブロック「 ( gpio17off▼ ) を送る」をブロックパレットに置いたままクリックすると、LEDが消灯することを確認しておきます。

ブロック「 ( gpio17off▼ ) を送る」をスクリプトエリアに引き出し、ブロック「もし< ( gpio4▼センサーの値 ) = ( 1 ) >なら「」でなければ「」」の下側の凹に当て嵌めます。

ブロック「 ( config4inputpulldown▼ ) を送る」をブロック「 ( config17out▼ ) を送る」の上に繋ぎます。

ブロック「 ( 緑色 ) の旗がクリックされたとき」をブロック「 ( config4inputpulldown▼ ) を送る」の上に繋ぎます。

スクリプトを実行する

画面右上の「緑の旗」をクリックするとスクリプトが起動し、「緑の旗」の色も明るい緑に変わります。

スクリプトが起動中にタクトスイッチを押すと、ステージの「 gpio4センサーの値 」が”1″になってLEDが点灯します。

画面右上の「赤丸」ボタンをクリックすると、クリックした瞬間にスクリプトが停止し、LEDが消灯します。

プロジェクトを保存する

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

現れた「プロジェクトを保存」画面の右にある「pi」ボタンをクリックします。

表示されたフォルダから保存するフォルダを選択します。この例では、【第3回】で作ったフォルダ「Scratch_GPIO」を選択しました。

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

次回は、今回のタクトスイッチによるScratchのスクリプト制御と【第4回】の”Lチカ蛍”を組合わせた事例を紹介したいと思います。

この記事をシェアしよう!