Raspberry Pi4とScratch3.0でスイッチを使ってみよう。

2024年5月18日

【 当サイトには広告リンクが含まれています。 】


Raspberry Pi4(Raspberry Pi4 ModelB 4GB)のGPIOピンを入力状態に設定し、接続したスイッチの状態に応じて、LEDを点灯、消灯、点滅させたり、ブザーを鳴らしたりします。


実験準備



押しボタンスイッチでロケットを発射/帰還させよう。


「Raspberry Pi4」のGPIOピンに接続された「押しボタンスイッチ(以下 タクトスイッチ)」を押すごとに、Scratch3.0のステージ(宇宙)に配置したロケットが横方向に回転しながら発射/帰還します。


ブレッドボードを使った接続


ブレッドボードを使って「タクトスイッチ」をジャンパーワイヤー で接続します。

部品表


キットの中から次の部品を使います。

部 品 名規 格数 量備 考
タクトスイッチ 6x6x4.3mm
ジャンパーワイヤーオスピン ー オスピン


回路の組立て


ブレッドボード上で配線します。


タクトスイッチの構造


タクトスイッチは、常につながっている端子(足)と、ボタンを押すとつながる端子(足)がありますので、接続する向きに注意が必要です。



オブジェクトの設定


  • 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/4W 470Ω
発光ダイオード(LED)赤色
ジャンパーワイヤーオスピン ー オスピン


回路の組立て


ブレッドボード上で配線します。





ボタン押して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/4W 470Ω
カーボン抵抗1/4W 2KΩ1
発光ダイオード(LED)赤色
発光ダイオード(LED)緑色1
トランジスタ(NPN)S80501
電子ブザーHYDZ
ジャンパーワイヤーオスピン ー オスピン13


回路の組立て


ブレッドボード上で配線します。




【実際の配線】


電子ブザー


電子ブザーを鳴らすためには、50mA程度の電流が必要になり、GPIOピンでは電流容量が足りないので、トランジスタ(S8050)を使って鳴らします。

電子ブザーには極性(+、ー)があり、足の長い方が「+」、短い方が「ー」となっていますので、配線するときは注意が必要です。



トランジスタ(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を点灯・消灯させブザーを鳴らす「ブザーに注意しながらバナナをゲット!」を作成しました。