【 第10回 】人感センサーで”Lチカ”on/offをScratch 2でも完成

0
1513

【第9回】では、人感センサーからの出力をGPIO4番に接続し、意図せずに”Lチカ”できてしまいましたが、スクリプト停止時の挙動が不安定でした。

その後、【番外編】で各GPIO毎のプルアップ/プルダウン設定が確認できたので、あらためて「Scratch 2」でも人感センサーによる”Lチカ”on/offのプロジェクトを作ってみることにしました。

今回使った部品

  • Raspberry Pi 3 Model B × 1
  • 40Pinフラットリボンケーブル
  • 40Pin T型GPIO拡張ボード
  • ブレットボード × 1
  • LED × 1
  • 抵抗 220Ω × 1
  • 人感センサー ( HC-SR501:焦電型赤外線センサーモジュール )
  • ジャンプワイヤー(オス/オス) × 2
  • ジャンプワイヤー(オス/メス) × 3

実体配線図

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

今回の回路は、人感センサーからの出力をGPIO21番に接続したこと以外、【第9回】と同じです。

予め、新たなプロジェクトを別名で保存しておく

【第1回】と同じ「Scratch 2」を起動しますが、事前に拡張機能の”Pi GPIO”を追加しておく必要はありません。

メニューバーから「ファイル▼」→「Load Project」をクリックします。

ファイル選択画面が現れるので、今回のプロジェクトのベースとする【第9回】で作ったプロジェクト”LED_PIR.sb2″を選択して、「開く」ボタンをクリックします。

「Replace contents of the current project?」画面が現れるので、「OK」ボタンをクリックすると、画面左上のプロジェクト名と共にスクリプトエリアにプロジェクトが表示されます。

間違えて上書きしてしまわないように、予めメニューバーの「ファイル▼」→「プロジェクトを保存」をクリックし、別プロジェクトとして保存しておきます。

新しいプロジェクトの保存先を開いて、項目「名前:」の入力蘭に拡張子”.sb2″はそのままで今回のプロジェクト名を入力し、「保存」ボタンをクリックします。

人感センサーによる"Lチカ"on/offスクリプトを作る

画面中央の「◀」ボタンをクリックし、スクリプトエリアを拡げておきます。

ブロック「ずっと」の内側に抱え込まれたブロックを外に引き出します。

ブロック「もし<gpio (4) is high?>なら」の内側に抱え込まれたブロックを外に引き出します。

ブロック「もし<gpio (4) is high?>なら」を右クリックして削除します。

引き出したブロックをカテゴリー「制御」のブロック「もし<>なら「」でなければ「」」の上側の凹に抱え込ませます。

カテゴリー「その他」のブロック「<gpio (  ) is high?>」をブロック「もし<>なら「」でなければ「」」の”<>”に当て嵌めます。

ブロック「もし<gpio (  ) is high?>なら「」でなければ「」」の”(  )”に、【番外編】でプルダウンに設定されていることが分かったGPIO番号”21″を入力します。

ブロック「<set gpio (17) to output low ▼>」を右クリックして複製します。

複製したブロック「<set gpio (17) to output low ▼>」をブロック「もし<gpio (21) is high?>なら「」でなければ「」」の下側の凹に当て嵌めます。

できたスクリプトをブロック「ずっと」の内側に抱え込ませます。

カテゴリー「その他」のブロック「<set gpio (  ) to output high ▼>」をブロック「緑の旗がクリックされたとき」の下に割り込ませます。

ブロック「<set gpio (  ) to output high ▼>」の”(  )”に、人感センサーからの出力を接続したGPIO番号”21″を入力します。

ブロック「<set gpio (21) to output high ▼>」の”▼”をクリックして”input”を選択します。

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

猫を人感センサーからの出力モニターにする

カテゴリー「見た目」のブロック「 (Hello!) と言う」をブロック「もし<gpio (21) is high?>なら「」でなければ「」」の上側の凹に当て嵌めます。

カテゴリー「見た目」のブロック「 (Hello!) と言う」をブロック「もし<gpio (21) is high?>なら「」でなければ「」」の下側の凹に当て嵌めます。

ブロック「もし<gpio (21) is high?>なら「」でなければ「」」の上側の凹に抱え込まれたブロック「 (Hello!) と言う」の”Hello!”を”blink!”で上書きします。

ブロック「もし<gpio (21) is high?>なら「」でなければ「」」の下側の凹に抱え込まれたブロック「 (Hello!) と言う」の”Hello!”を”turn off!”で上書きします。

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

画面中央の「◀」ボタンをクリックし、ステージを拡げておきます。

ステージ上の緑の旗をクリックすると、スクリプトが実行されます。

人感センサーに手をかざすと、ステージ上の猫が「blink!」と言うのに合わせてLEDが点滅します。

人感センサーから離れると、ステージ上の猫が「turn off!」と言うのに合わせてLEDが消灯します。

ステージ上の?ボタンをクリックすると、スクリプトが停止します。

作成したプロジェクトを上書き保存する

プロジェクトを上書き保存する為、メニューバーの「ファイル▼」→「プロジェクトを保存」をクリックします。

項目「名前:」の入力蘭に、このプロジェクト名が表示されていることを確認して、「保存」ボタンをクリックします。

「上書きしてもよろしいですか?」画面が現れるので、「置き換える」ボタンをクリックします。

これまで”Lピカ”から始まり”Lチカ”ばかりやってきましたが、同じ”Lチカ”でも「Scratch 2」と「Scratch 1.4」ではスクリプトの組み方がかなり違うことが分かりました。
より幅広いデバイスに接続可能な拡張システムを含むという「Scratch 3.0」の正式リリースが今から楽しみです。