【 第11回 】上下矢印キーでLEDの明るさをコントロール

0
962

【第8回】では「Scratch 1.4」のPWM出力でLEDの明るさを自動的に上下させましたが、今回はキーボードの上下矢印キーでLEDを任意の明るさにコントロールできるようにしてみます。

今回使った部品

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

実体配線図

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

今回は【第4回】と同じ回路で、スクリプトによりLEDの明るさをコントロールします。

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

メニューバーの「ファイル」→「開く…」をクリックします。

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

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

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

外部入力端子(GPIO4)の設定を取り除く

画面右上の画面サイズ切替えアイコンの左側をクリックし、スクリプトエリアを拡げておきます。

上から2番目と3番目のブロックを引き離します。

上から3番目と4番目のブロックを引き離します。

今回、人感センサーのような外部からの入力端子は使わないので、ブロック「config4in▼を送る」を右クリックして削除します。

削除したブロックの上下を繋ぎます。

スクリプト停止時のフェードアウトスクリプトを取り除く

ブロック「もし<スペース▼キーが押された>なら「」でなければ「」」の上側の凹に抱え込まれたブロックを外に出します。

ブロック「もし<pwmout > 0>なら「」でなければ「」」の下側の凹に抱え込まれたブロックを外に出します。

外に出したブロックをブロック「もし<スペース▼キーが押された>なら「」でなければ「」」の上側の凹に戻します。

残ったブロック「もし<pwmout > 0>なら「」でなければ「」」を右クリックして削除します。

LEDの明滅スクリプトを上下矢印キーで明るさをコントロールするスクリプトに組み替える

ブロック「もし<スペース▼キーが押された>なら「」でなければ「」」の下側の凹に抱え込まれたブロックを外に出します。

ブロック「もし<gpio4▼センサーの値 = 1>なら「」でなければ「」」の下側の凹に抱え込まれたブロックを外に出します。

残ったブロック「もし<gpio4▼センサーの値 = 1>なら「」でなければ「」」を右クリックして削除します。

ブロック「もし<pwmout > 0>なら「」でなければ「」」の上側の凹に抱え込まれたブロックを外に出します。

外に出したブロック「 (32) 回繰り返す」の内側に抱え込まれたブロックを外に出します。

外に出したブロックをブロック「もし<pwmout > 0>なら「」でなければ「」」の上側の凹に戻します。

残ったブロック「 (32) 回繰り返す」を右クリックして削除します。

カテゴリー「制御」のブロック「もし<>なら」で、ブロック「もし<pwmout > 0>なら「」でなければ「」」を抱え込ませます。

カテゴリー「調べる」のブロック「<スペース▼キーが押された>」をブロック「もし<>なら」の”<>”に当て嵌めます。

ブロック「もし<スペース▼キーが押された>なら」の”▼”をクリックして現れるメニューから「下向き矢印」を選択します。

ブロック「もし<下向き矢印▼キーが押された>なら」を右クリックして複製します。

ブロック「もし<下向き矢印▼キーが押された>なら」の”▼”をクリックして現れるメニューから「上向き矢印」を選択します。

ブロック「もし<pwmout > 0>なら「」でなければ「」」のブロック「<pwmout > 0>」をブロックパレットに戻します。

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

カテゴリー「変数」のブロック「(pwmout)」をブロック「もし< ( ) < ( ) >なら「」でなければ「」」の左側の”( )”に当て嵌めます。

ブロック「もし< (pwmout) < ( ) >なら「」でなければ「」」の”( )”に変数”pwmout”の最大値”1023″を入力します。

ブロック「pwmout▼を ( -8 ) ずつ変える」の”-8″を”8″で上書きします。

ブロック「gpio17off▼を送る」の”▼”をクリックして「新規/編集」を選択します。

現れた「メッセージの名前:」画面の入力欄を”gpio17on”で上書きし、「OK」ボタンをクリックします。

ブロック「もし<上向き矢印▼キーが押された>なら」の下にブロック「もし<下向き矢印▼キーが押された>なら」を繋ぎます。

上下に繋いだブロックを元のブロック「もし<スペース▼キーが押された>なら「」でなければ「」」の下側の凹に戻します。

LEDの明るさの変化が早すぎるとコントロールしにくいので、ブロック「 (0.01) 秒待つ」の”0.01″を”0.1″で上書きします。

もうひとつのブロック「 (0.01) 秒待つ」の”0.01″も”0.1″で上書きします。

LEDの明るさに連動して猫の大きさを変えるスクリプトを組み込む

ステージ上の変数モニターの数値とは別に、猫の大きさでLEDの明るさを表示する為、カテゴリー「見た目」のブロック「大きさを (10) ずつ変える」をブロック「 (0.1) 秒待つ」の下に割り込ませます。

カテゴリー「見た目」のブロック「大きさを (10) ずつ変える」をもうひとつのブロック「 (0.1) 秒待つ」の下に割り込ませます。

下の方のブロック「大きさを (10) ずつ変える」の”10″を”-10″で上書きします。

カテゴリー「見た目」のブロック「大きさを (**) %にする」をブロック「config17outputpwm▼を送る」の下に割り込ませます。

スクリプト開始時に猫の大きさをリセットする為、カテゴリー「見た目」のブロック「大きさを (**) %にする」の”**”を”100″で上書きします。

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

画面右上の画面サイズ切替えアイコンの右側をクリックし、ステージを拡げておきます。

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

キーボードの上下矢印キーを押すとLEDの明るさが変化しますが、変化のスピードが遅すぎました。それと連動する猫の大きさは逆に早すぎてステージをはみ出してしまいました。

「スペース」キーを押してスクリプトを停止します。

スクリプトの数値設定を見直す

LEDの明るさの変化を大きくする為、ブロック「pwmout▼を ( -8 ) ずつ変える」の”8″を”32″で上書きします。

ブロック「pwmout▼を ( -8 ) ずつ変える」の”-8″を”-32″で上書きします。

猫の大きさの変化を小さくする為、ブロック「大きさを (10) ずつ変える」の”10″を”4″で上書きします。

ブロック「大きさを (-10) ずつ変える」の”-10″を”-4″で上書きします。

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

ステージ上の緑の旗をクリックすると猫の大きさが一旦、元の大きさに戻り、キーボードの上矢印キーを押すとLEDがゆっくりと明るさを増すのに合わせて猫も大きくなり、下矢印キーを押すと逆に小さくなりながらLEDも暗くなります。ステージ上の変数モニターが1024のときの猫の大きさもこのくらいでちょうどいいみたいです。

スクリプトの停止は「スペース」キーで行います。赤?ボタンでは、押したときのLEDの明るさが保持されたままで停止してしまいます。

完成したプロジェクト

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

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

今回、キーボードの上下矢印キーでLEDを任意の明るさにコントロールできるようになったので、次回はフルカラーLEDを任意?の色で点灯させてみたいと思います。