Raspberry Pi4(Raspberry Pi4 ModelB 4GB)のGPIOピンを入力状態に設定し、接続したスイッチの状態に応じて、LEDを点灯、消灯、点滅させたり、ブザーを鳴らしたりします。
本ブログで作成したプログラムはこちらからダウンロードできます。
実験準備
「定番「Lチカ」! Scrach3.0でLEDゲーム。の実験準備」を参照してください。
押しボタンスイッチでロケットを発射/帰還させよう。
「Raspberry Pi4」のGPIOピンに接続された「押しボタンスイッチ(以下 タクトスイッチ)」を押すごとに、Scratch3.0のステージ(宇宙)に配置したロケットが横方向に回転しながら発射/帰還します。
ブレッドボードを使った接続
ブレッドボードを使って「タクトスイッチ」をジャンパーワイヤー で接続します。
部品表キットの中から次の部品を使います。
部 品 名 | 規 格 | 数 量 | 備 考 |
---|---|---|---|
タクトスイッチ | 6x6x4.3mm | 1 | |
ジャンパーワイヤー | オスピン ー オスピン | 2 | |
ブレッドボード上で配線します。
タクトスイッチは、常につながっている端子(足)と、ボタンを押すとつながる端子(足)がありますので、接続する向きに注意が必要です。
オブジェクトの設定
- Scratch3.0を起動(すでに起動している場合は、再起動してください。)した後、左下の「拡張機能を追加」をクリックして、「Raspberry Pi Simple Electronics」を追加します。
- スプライト1を削除したあとRocketshipを追加し、名前で「ロケット」に変更します。
- ステージの背景にGalaxyを追加し、背景タブでコスチューム名を「宇宙」に変更し、不要な背景を削除します。
ロケットの処理
「ロケット」の処理は、「タクトスイッチ」が押された時に始まります。
- 「タクトスイッチ」が接続されているGPIO21の状態が「押す(pressed)」になると処理を開始します。
- 「ロケット」が中心(y座標が0)より下にある場合は、横方向に回転しながら、ステージの上(y座標が150)まで5ピクセルずつ上がっていきます。(発射)
- 反対にロケット」が中心(y座標が0)より上にある場合は、横方向に回転しながら帰還し、ステージの下(y座標が-150)まで5ピクセルずつ下がってきます。(帰還)
「タクトスイッチ」を押すと、ロケットが横方向に回転しながら上がりステージの上で止まります。
もう一度、「タクトスイッチ」を押すと、ロケットは横方向に回転しながら下がりステージの下で止まります。
押しボタンスイッチでLEDを点灯/消灯/点滅させよう。
「Raspberry Pi4」のGPIOピンに接続され「「押しボタンスイッチ(以下 タクトスイッチ)」を押して、GPIOピンに接続された「LED」を点灯/消灯/点滅させます。
- ボタン押してLEDを点灯、放して消灯させよう。
- ボタンを押している間、LEDを点滅させよう。
- ボタンが押されるまで、LEDを点滅させよう。
の3例で実際のコードを紹介します。
紹介する3例はRaspberry Pi Foundationが提供している「Button switches, Scratch 3, and Raspberry Pi 4」を参考にして作成しました。
ブレッドボードを使った接続
ブレッドボードを使って「タクトスイッチ」、「LED」をジャンパーワイヤー で接続します。
キットの中から次の部品を使います。
部 品 名 | 規 格 | 数 量 | 備 考 |
---|---|---|---|
タクトスイッチ | 6x6x4.3mm | 1 | |
カーボン抵抗 | 1/4W 470Ω | 1 | |
発光ダイオード(LED) | 赤色 | 1 | |
ジャンパーワイヤー | オスピン ー オスピン | 4 | |
ブレッドボード上で配線します。
ボタン押してLEDを点灯、放して消灯させよう。
「タクトスイッチ」が押されている間は「LED」が点灯し、放すと消灯します。
オブジェクトの設定
- Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。
- 左下の「拡張機能を追加」をクリックして、「Raspberry Pi Simple Electronics」と「Raspberry Pi GPIO」を追加します。
スプライト1(ネコ)の処理
コードは「スプライト1(ネコ)」のコードエリアに作成します。
- 「タクトスイッチ」を押している間は、接続されているGPIO21の状態が「押す(pressed)」になり処理か開始され、GPIO17を「high」にして「LED」が点灯します。
- 「タクトスイッチ」を解放している間は、接続されているGPIO21の状態が「放す(relesed)」になり処理か開始され、GPIO17を「low」にして「LED」が消灯します。
「タクトスイッチ」を押すと「LED」が点灯し、放すと消灯します。
ボタンを押している間、LEDを点滅させよう。
「タクトスイッチ」が押されている間は「LED」が点滅し、放すと消灯します。
オブジェクトの設定
- Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。
- 左下の「拡張機能を追加」をクリックして、「Raspberry Pi Simple Electronics」と「Raspberry Pi GPIO」を追加します。
スプライト1(ネコ)の処理
コードは「スプライト1(ネコ)」のコードエリアに作成します。
- 「(緑の旗)」をクリックすると「スプライト1」の処理を開始します。
- 「タクトスイッチ」が接続されているGPIO21の状態を判定し、押されている間は、GPIO17に接続されている「LED」が1秒間隔で点滅し、放すと消灯します。
「(緑の旗)」をクリックして処理を開始します。
「タクトスイッチ」を押している間は、「LED」が1秒間隔で点滅し、放すと消灯します。
確認後、「止める」ボタンをクリックしてプログラムを停止します。
ボタンが押されるまで、LEDを点滅させよう。
「タクトスイッチ」が押されている間は「LED」が点滅し、放すと消灯します。
オブジェクトの設定
- Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。
- 左下の「拡張機能を追加」をクリックして、「Raspberry Pi Simple Electronics」と「Raspberry Pi GPIO」を追加します。
スプライト1(ネコ)の処理
コードは「スプライト1(ネコ)」のコードエリアに作成します。
- 「(緑の旗)」をクリックすると「スプライト1」の処理を開始します。
- 「タクトスイッチ」が接続されているGPIO21の状態を判定し、押されている間は、GPIO17に接続されている「LED」を消灯します。
- 押されていなければ、GPIO17に接続されている「LED」が1秒間隔で点滅します。
「(緑の旗)」をクリックして処理を開始します。
「タクトスイッチ」を押している間は、「LED」が消灯し、放すと1秒間隔で点滅します。
確認後、「タクトスイッチ」を押しながら「止める」ボタンをクリックしてプログラムを停止します。
ブザーに注意しながらバナナをゲット!
このゲームは、タクトスイッチを押して「おサルさん」がバナナを取りに行く単純なゲームです。
「おサルさん」が前に動けるのは「緑のLED」が点灯しているときだけで、「赤のLED」が点灯しているときに「おサルさん」が動こうとすると、後戻りしてしまいます。
- 「おサルさん」を動かすには、タクトスイッチを押すだけです。
- 赤いLEDが点灯している時は移動してはいけません。赤いLEDが点灯しているときにタクトスイッチを押すと、「おサルさん」は後戻りしてしまいます。
- 緑のLEDが点灯しているときは、前進することができます。緑のLEDが点灯しているときにタクトスイッチを押すと、「おサルさん」は前に進みます。
- 緑のLEDが消灯し、赤いLEDが点灯する直前に、警告としてブザーが鳴ります。ブザーが聞こえたら、すぐにタクトスイッチを押すのをやめなければなりません。
このゲームはRaspberry Pi Foundationが提供している「Scratch games with LEDs and buzzers」を参考にして作成しました。
ブレッドボードを使った接続
ブレッドボードを使って「タクトスイッチ」、「LED」、「ブザー」をジャンパーワイヤー で接続します。
キットの中から次の部品を使います。
部 品 名 | 規 格 | 数 量 | 備 考 |
---|---|---|---|
タクトスイッチ | 6x6x4.3mm | 1 | |
カーボン抵抗 | 1/4W 470Ω | 2 | |
カーボン抵抗 | 1/4W 2KΩ | 1 | |
発光ダイオード(LED) | 赤色 | 1 | |
発光ダイオード(LED) | 緑色 | 1 | |
トランジスタ(NPN) | S8050 | 1 | |
電子ブザー | HYDZ | 1 | |
ジャンパーワイヤー | オスピン ー オスピン | 13 | |
ブレッドボード上で配線します。
【実際の配線】
電子ブザーを鳴らすためには、50mA程度の電流が必要になり、GPIOピンでは電流容量が足りないので、トランジスタ(S8050)を使って鳴らします。
電子ブザーには極性(+、ー)があり、足の長い方が「+」、短い方が「ー」となっていますので、配線するときは注意が必要です。
トランジスタ(S8050)のピン配置は次のようになっています。
おすすめの一冊
オブジェクトの設定
- Scratch3.0を起動(すでに起動している場合は、再起動してください。)します。
- 左下の「拡張機能を追加」をクリックして、「Raspberry Pi Simple Electronics」と「Raspberry Pi GPIO」を追加します。
- スプライト1を削除したあと、MonkeyとBananasのスプライトを追加し、スプライトの名前でそれぞれ、「サル」と「バナナ」に変更します。
- 「サル」の大きさを「60」に「バナナ」の大きさを「70」します。
- ステージの背景にWoodsを追加し、背景タブでコスチューム名を「森」に変更後、不要な背景を削除します。
森(背景)の処理
「背景」の処理は、「サル」などのスプライト個別処理ではできない共通な処理を行います。
ゲーム開始前の処理- 「(緑の旗)」をクリックすると処理を開始します。
- 「緑のLED」を消灯、「赤のLED」を点灯、「ブザー」を停止します。
- ゲームがいつ始まるかわからないようにするため、1.5~5.5秒の間でランダムな待ち時間を設定します。
- 時間が経過した後、「緑のLED」と「赤のLED」の点灯/消灯、「ブザー」を鳴らす/停止を繰返す処理を開始します。
- 「緑のLED」を点灯、「赤のLED」を消灯し、1.5~2.5秒の間でランダムな時間が過ぎた後、「ブザー」を鳴らします。
- 処理の都合上、0.2秒待った後、「緑のLED」を消灯、「赤のLED」を点灯、「ブザー」を停止した後、1.5~5.5秒の間でランダムな時間を待ち、上の処理を繰り返します。
ゲーム終了後、LEDが点灯している可能性があるので、LEDの消灯、ブザーの停止する処理を行います。
- キーボードの「q」キーを押すと処理を開始します。
- 「緑のLED」及び「赤のLED」を消灯し「ブザー」を停止します。
サルの処理
「サル」は「タクトスイッチ」を押したとき、「緑のLED」が点灯している場合は前に進み、「赤のLED」が点灯している場合は後退します。
「サル」がバナナに行き着くと、「バナナをゲット!」が表示されます。
- 「(緑の旗)」をクリックすると処理を開始します。
- 「サル」の大きさと最初の位置を設定し、次の処理を繰り返し実行します。
- 「タクトスイッチ」が押された場合、「緑のLED」が点灯していれば、5ピクセル前進し、そうでなければ(「赤のLED」が点灯)25ピクセル後退します。
- 「サル」がバナナに行き着くと、「バナナをゲット!」が表示されます。
「(緑の旗)」をクリックして処理を開始します。
「タクトスイッチ」を押したとき「緑のLED」が点灯している場合は前に進み、「赤のLED」が点灯している場合は後退します。
「サル」がバナナに行き着くと、「バナナをゲット!」が表示されます。
「止める」ボタンをクリックしてプログラムを停止し、キーボードの「q」キーを押すと、「緑のLED」及び「赤のLED」を消灯し「ブザー」が停止します。
まとめ
Raspberry Pi4(Raspberry Pi4 ModelB 4GB)のGPIOピンを入力状態に設定し、接続したタクトスイッチを使ってLEDを点灯、消灯、点滅させる方法を学びました。
タクトスイッチを利用した簡単な例として、LEDを点灯・消灯させブザーを鳴らす「ブザーに注意しながらバナナをゲット!」を作成しました。