皆さんこんにちは。yossyです。
今回は、電子工作を始める人に向けて、Raspberry Pi Picoで初心者にも簡単にできる「反射神経ゲーム」の作り方を紹介します。
Raspberry Pi Picoは小型のマイコンボードで、簡単に電子工作をすることができます。

夏休みの自由工作など、親子でする工作にもぴったりです。Raspberry Pi Picoの基本的な使い方をゲームを通して学んでいきましょう!
初心者でも簡単!反射神経ゲームをつくる
今回作るのは反射神経ゲームです。
ルールは簡単!ランダムなタイミングでLEDが光ったらボタンを押すだけ!反応速度を計測して、どれぐらい速く押せるか競います。自分の限界を探したり、友達や家族と競って遊ぶことができます。



こんなふうに、シェルに結果を表示します。
必要なもの
このゲームを作るのに必要なものは次の通りです。
- Raspberry Pi Pico
- LED
- 抵抗(330Ω)
- タクトスイッチ
- ブレッドボード
- ジャンパーワイヤー
LED・抵抗・タクトスイッチといった基本的なパーツで作ることができます。
もしラズピコ本体を購入する際は、Pico HやPico WHなどピンヘッダがついてるものを選ぶとはんだ付け不要で簡単です。
・Raspberry Pi Pico H
・Raspberry Pi Pico WH
・LEDや抵抗など必要なパーツが入ったスターターキット


・Raspberry Pi Pico W(H)やセンサーも入ったスターターキット


配線
配線は表のようになります。
パーツ | ラズピコ |
---|---|
LED | アノード(+)→GP16 / カソード(-)→抵抗を通してGND |
タクトスイッチ | 2つの足をGP17とGNDに接続 |
実際に配線するとこんな感じになりました。


開発環境の準備
プログラムを書き込む前に、ラズピコをパソコンで使えるようにセットアップします。
- Thonnyをインストール
- ラズピコをPCに接続→Thonny右下をクリックして「MicroPythonをインストール」
- 画面に従ってラズピコにMicroPythonをインストール
- Thonnyのインタプリタをラズピコに設定



詳しい解説はこちらをご覧ください!


プログラム
ゲームのプログラムはこんな感じです。このコードをThonnyに貼り付けて実行してみましょう。
from machine import Pin
import time
import random
led = Pin(16, Pin.OUT) #LEDの設定
sw = Pin (17, Pin.IN, Pin.PULL_UP) #タクトスイッチの設定
led.off() #LEDをオフ
#ゲームの処理
def reaction_game():
led.off()
print("ゲームスタート!")
delay = random.uniform(2, 5) #2~5の間でランダムな小数を決める
time.sleep(delay) #決まった秒数待つ
led.on() #LEDを光らせる
print("今だ!")
start_time = time.ticks_ms() #LEDが光ったときの時刻を記録
while sw.value() == 1: #ボタンが押されるまで待つ
time.sleep_ms(1) #CPU負荷軽減
#反応速度 = ボタンが押された時刻とLEDが光った時刻の差
reaction_time = time.ticks_diff(time.ticks_ms(), start_time)
print(f"あなたの反応速度は{reaction_time}ミリ秒(約{(reaction_time / 1000):.2f}秒)でした!")
print("ゲームをするにはボタンを押してください。")
while True:
if sw.value() == 0:
reaction_game()
print("ゲームをするにはボタンを押してください。")
else:
led.on()
time.sleep(0.1)
プログラムの解説
ポイントごとに解説していきます。
from machine import Pin
import time
import random
led = Pin(16, Pin.OUT) #LEDの設定
sw = Pin (17, Pin.IN, Pin.PULL_UP) #タクトスイッチの設定
led.off() #LEDをオフ
これは、ゲームの初期設定です。はじめに、ゲームに必要な機能を読み込みます。LEDをGP16,タクトスイッチをGP17に接続して、それぞれ出力と入力に設定します。
#ゲームの処理
def reaction_game():
led.off()
print("ゲームスタート!")
delay = random.uniform(2, 5) #2~5の間でランダムな小数を決める
time.sleep(delay) #決まった秒数待つ
led.on() #LEDを光らせる
print("今だ!")
start_time = time.ticks_ms() #LEDが光ったときの時刻を記録
while sw.value() == 1: #ボタンが押されるまで待つ
time.sleep_ms(1) #CPU負荷軽減
#反応速度 = ボタンが押された時刻とLEDが光った時刻の差
reaction_time = time.ticks_diff(time.ticks_ms(), start_time)
print(f"あなたの反応速度は{reaction_time}ミリ秒(約{(reaction_time / 1000):.2f}秒)でした!")
この部分はゲームの中身です。
LEDを消す→ランダムな時間でLEDが光る→ボタンが押されるまで待つ→時間を計算
このような処理を行っています。
print("ゲームをするにはボタンを押してください。")
while True:
if sw.value() == 0:
reaction_game()
print("ゲームをするにはボタンを押してください。")
else:
led.on()
time.sleep(0.1)
最後はこちら。スイッチが押されたらゲームを始めて、押されていないときはLEDを光らせて待ちます。
ここまでの解説に関連する記事をいくつか用意しているので、もっと知りたい方はぜひご覧ください!




もしも動かなかったら
もし、この通りにやっても動かない!ということがあれば、次のことを確認してください。
症状 | よくある原因 | 対策 |
---|---|---|
LEDが光らない | 配線ミス | LEDの向きや抵抗を確認。ラズピコのピンが正しいかもチェック。 |
ボタンを押しても動かない | 配線ミス | LEDと同様に配線先を確認。 |
エラーが出る | コードが違う or Thonnyの設定ミス | コードが正しいか確認。インタプリタがPicoじゃないかも。 |



「確認したけど直らない…」ということがあれば、コメント欄やXのDMから気軽に質問してください!
応用アイデア
- マルチプレイヤー対戦:ボタンを増やして複数人で対戦!
- スコアを表示:ディスプレイを接続してスコアを表示!
- フライング対策:割り込み処理を追加してフライング対策!
などなど、このゲームを面白くするアイデアはたくさんあります。


まとめ
今回はRaspberry Pi Picoで簡単につくれる反射神経ゲームを紹介しました。
LEDやスイッチといった基本的なパーツの使ったプログラムを体験できるとてもいいプロジェクトです。
他にもラズピコで作れるものはたくさんあるので、ぜひチャレンジしてみてください!




コメント