【 第3回 】拡張機能”Pi GPIO”で、Lピカをキー操作でon/off

0
1615

前回の【第2回】に続き、「Scratch 2」に収録されていた”Lピカ”を実行します。

前回は、Raspberry Pi上の電源 ( 3.3VとGND ) を使って”Lピカ”させただけでしたが、今回は、拡張機能”Pi GPIO”を追加した「Scratch 2」のプロジェクト ( プログラム ) で”Lピカ”を実行してみます。

今回使った部品

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

実体配線図

これが「Scratch 2」に収録されていた、もうひとつの”Lピカ”ですが、これをブレッドボード上で配線します。Raspberry Piとブレッドボードは、【第2回】の手順で40PinフラットリボンケーブルとT型GPIO拡張ボードで接続しておいてください。配線は、Raspberry Piを起動しない状態で行います。

①T型GPIO拡張ボードのGNDと導通しているブレッドボードの穴 ( 実体配線図の緑色で示す ) をジャンプワイヤーで右側の穴に接続し、GNDラインを右へ引き出します。

②その穴と導通する穴に、LEDの足の短い方を差し込み、長い方をブレッドボードの中央部の溝を挟んで反対側の穴に差し込みます。

③その穴と導通する穴に、抵抗 ( 実例では330Ωですが、今回は手元にあった220Ωを使いました ) の片側を差し込み、もう片方をその左側の穴に差し込みます。

④その穴と導通する穴と、T型GPIO拡張ボードのGPIO17と導通している穴をジャンプワイヤーで接続します。

Lピカの実行

Raspberry Piを起動して、「Scratch 2」を開いたら、あらかじめ【第1回】の手順で拡張機能”Pi GPIO”を追加しておきます。

①ブロック「set gpio (  ) to output high」の”(  )”をマウスでクリックして、今回使用するGPIO番号”17″を入力し、このブロックをブロックパレットに置いたままクリックすると、GPIO17の出力が”high ( 3.3V ) “になってLEDが点灯します。

LEDが点灯したままでは困るので、ブロック「set gpio (  ) to output high」の”output high”をクリックして出るメニューから「output low」を選択し、このブロックをブロックパレットに置いたままクリックすると、LEDが消灯します。

Lピカの on/off スイッチ

いちいち、出力を切替えるのは面倒なので、LEDのon/offスイッチを作ります。

ブロック「set gpio ( 17 ) to output low」をドラッグアンドドロップで、スクリプトエリアに引き出します。

②ブロックパレットのカテゴリー「制御」を選択し、ブロック「もし<  >なら、でなければ」の上の凹部にブロック「set gpio ( 17 ) to output low」を挟みます。

ブロックパレットのカテゴリー「その他」を選択します。

③ブロック「<gpio (  ) is high?>」をブロック「もし<  >なら、でなければ」の”<  >”に当て嵌めます。

④ブロック「set gpio (  ) to output high」をブロック「もし<  >なら、でなければ」の下の凹部に当て嵌めます。

⑤ブロック「<gpio (  ) is high?>」の (  ) 内をクリックし、今回使用するGPIO番号”17″を入力します。

⑥ブロック「set gpio (  ) to output high」の (  ) 内をクリックし、今回使用するGPIO番号”17″を入力します。

⑦ブロックパレットのカテゴリー「制御」を選択し、ブロック「もし<  >なら」の内側にブロック「もし<  >なら、でなければ」を挟みます。

⑧ブロックパレットのカテゴリー「調べる」を選択し、ブロック「< [ スペース▼ ] キーが押された>」をブロック「もし<  >なら、でなければ」の”<  >”に当て嵌めます。

⑨ブロックパレットのカテゴリー「制御」を選択し、ブロック「ずっと」の内側にブロック「もし<  >なら、でなければ」を挟みます。

⑩ブロックパレットのカテゴリー「イベント」を選択し、ブロック「 ( 緑の ) 旗がクリックされたとき」をブロック「ずっと」の上に繋ぎます。

画面上中央の「 ( 緑の ) 旗 」をクリックすると、LEDは点いたり点かなかったり、点滅したりで動作が不安定です。

これは”チャタリング“と言って、キーボードのキーを押した際の接点の跳ね返りによって、数100μ秒~数10m秒程度の時間内に複数回の信号が発信されてしまう現象です。これは、最初の信号を受信したときに100m ( 0.1 ) 秒程度の時間を待機させ、その間の信号を受け付けなくすることで回避できます。

ブロックパレットのカテゴリー「制御」を選択します。

⑪ブロック「 ( 1 ) 秒待つ」をブロック「もし<  >なら」とブロック「もし<  >なら、でなければ」の間に割り込ませます。

⑫ブロック「 ( 1 ) 秒待つ」の” ( 1 ) “をクリックして、”0.1″で上書きします。

画面上中央の「 ( 緑の ) 旗 」をクリックすると、今度はちゃんと「スペース」キーを押す度にLEDのon/offが切り替わるようになりました。

画面上中央の「赤丸」ボタンをクリックすると、このプロジェクト ( プログラム ) が停止して、「スペース」キーを押してもLEDのon/offが切り替わらなくなりました。

Lピカの プロジェクト ( プログラム ) の保存

「Scratch 2」のメニューバーから「ファイル▼」→「プロジェクトを保存?」をクリックします。

別画面が開くので、項目「名前:」の入力蘭に拡張子”.sb2″はそのままで今回のプロジェクト名を入力し、「フォルダの作成」ボタンをクリックします。

画面の右ペインにフォルダ名の入力欄が現れるので、プロジェクトを保存するフォルダ名を入力して「Enter」キーを押します。

項目「フォルダの中に保存:」に作成したフォルダが表示されていることを確認して、「保存」ボタンをクリックします。

プロジェクト ( プログラム ) の読み出し

保存したプロジェクトを読み出すには、「Scratch 2」のメニューバーから「ファイル▼」→「Load Project」をクリックします。

別画面で「最近開いたファイル」が表示されるので、開くファイルを選択して、「開く」ボタンをクリックします。

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

次回は、いよいよ”Lピカ”じゃないホンモノの”Lチカ”をトライしてみたいと思います。