【第6回】で、タクトスイッチで”Lチカ蛍”をon/offすることができるようになったので、タクトスイッチを人感センサーに替えれば、人が近づくと蛍が明滅するようなものが実現できるのではないかと思い試してみました。
今回使った部品
- Raspberry Pi 3 Model B × 1
- 40Pinフラットリボンケーブル
- 40Pin T型GPIO拡張ボード
- ブレットボード × 1
- LED × 1
- 抵抗 220Ω × 1
- 人感センサー ( HC-SR501:焦電型赤外線センサーモジュール )
- ジャンプワイヤー(オス/オス) × 2
- ジャンプワイヤー(オス/メス) × 3
実体配線図
予め、新たなプロジェクトを名前を付けて保存しておく
【第6回】と同じ「Scratch 1.4」を起動しますが、今回はGPIOサーバーを事前に起動しておく必要はありません。
表示されたフォルダから、ベースとするプロジェクトが保存されたフォルダを選択します。今回は、【第6回】のプロジェクト”LED_hotaru_SW”を保存したフォルダ「Scratch_GPIO」をダブルクリックします。
GPIOサーバーを起動するブロックを置く
人感センサーからの入力をGPIO4番ピンに設定する
スクリプトを実行してみる
停止時にLEDを消灯するスクリプトを作る
LED明滅中に人感センサーからの信号でLEDを消灯させるスクリプトを作る
ブロック「もし< gpio4▼センサーの値 = ( 1 ) >なら「」」に抱え込まれたブロック全てを引き出し、ブロック「もし< gpio4▼センサーの値 = ( 1 ) >なら「」でなければ「」」の上側の凹に当て嵌めます。
もう1組のブロック「もし< gpio4▼センサーの値 = ( 1 ) >なら「」」に抱え込まれたブロック全てを引き出し、ブロック「もし< gpio4▼センサーの値 = ( 1 ) >なら「」でなければ「」」の上側の凹に当て嵌めます。
ブロック「 ( 32 ) 回繰り返す」に抱え込まれたブロックを引き出し、右クリックして現れるメニューから「削除」をクリックします。
もう1組のブロック「 ( 32 ) 回繰り返す」に抱え込まれたブロックを引き出し、右クリックして現れるメニューから「削除」をクリックします。
2組のブロック「もし< gpio4▼センサーの値 = ( 1 ) >なら「」でなければ「」」を2組のブロック「 ( 32 ) 回繰り返す」の内側に抱え込ませます。
2つのスクリプトを合体してメインのスクリプトに組み込む
2組のブロック「 ( 32 ) 回繰り返す」をブロック「gpio4▼を ( 0 ) にする」の下に繋げます。
繋げたブロックをブロック「もし< スペース▼キーが押された >なら「」でなければ「」」の下側の凹に当て嵌めます。
もう一度、スクリプトを実行してみる
人感センサー信号切替時、GPIO17出力の強制リセットスクリプトを組み込む
3度目のスクリプトを実行する
作成したプロジェクトを上書き保存する
できたと思ったスクリプトでも、変数モニターの値を見ながら挙動を注意深く観察すると、問題点に気付くことがあります。今回も残念ながら問題点を残してしまったので、次回はこの改善に取り組んでみたいと思います。