SHIROのIchigoJam日記

マイコン「IchigoJam」(イチゴジャム)の電子工作とプログラミングをメインに

だるまさんがころんだ

IchigoJamと赤外線センサーを組み合わせて、昔懐かしい「だるまさんがころんだ」を作ってみました。

遊び方は以下のとおりです。

  • (1)ボタンを押して自動起動させると「ピッ、ピッ、…」と10秒カウントするので、その間にIchigoJamから5mほど離れて立ってください。
  • (2)IchigoJamが「だるまさんがころんだ」とメロディでしゃべります。その間に動いてIchigoJamへ近づいてください。たまに早口でしゃべりますので注意してください。
  • (3)言い終わったらチェックタイムです(ランダムで長かったり短かったりします)。赤外線センサーで動きをチェックされるので、この時間はピクリとも動いてはいけません。動いてしまうと「プー」とエラー音が鳴ってゲームオーバーです。
  • (4)(2)へ戻ってくり返します。「だるまさんが…」と言っている間にIchigoJamへ辿りついてボタンを押すと、「ピピピピー」と終了音が鳴り、人間の勝ちです。
  • (5)ゲーム終了後にボタンを押すと、(1)に戻ってリプレイします。

センサーの接続回路図はこちらです。

プログラムは以下のとおりです。簡単な短いプログラムなので、参考にラベルを残しています。
画面に状況を表示していますが、画面が無くても音とLEDの点滅だけでも十分遊べます。

※(7/18修正)乱数の出し方、ブザー音を若干修正。
※(2019/10/7修正)サウンド処理修正。ファームウェア1.4の自動起動対応。

10 @ARUN:'*Darumasan ga koronda
20 CLV:SRND ANA(2):LED 0:WAIT 60
30 FOR T=1 TO 10:LED 1:?T:BEEP:LED 0:WAIT 60:NEXT
40 @GLOOP
50 '
60 ?"*Darumasan ga koronda!"
70 LED 1:L=2:IF RND(3) L=4
80 IF L=4 GSB @PLAYL ELSE GSB @PLAYS
90 @BLOOP
100 IF BTN() GOTO @GWIN
110 IF SOUND() GOTO @BLOOP
120 WAIT 30:LED 0
130 '
140 ?"-Checking..."
150 C=3+RND(3):CLT
160 @CLOOP
170 IF IN(2) GOTO @GEND
180 IF TICK()<C*60 GOTO @CLOOP
190 GOTO @GLOOP
200 '
210 @GWIN
220 LED 1:?"===You WIN!==="
230 FOR I=1 TO 4
240 BEEP 10,3:WAIT 6
250 NEXT
260 BEEP 10,100
270 @REPLAY
280 WAIT 60
290 IF !BTN() CONT
300 RUN
310 '
320 @GEND
330 LED 1:?"===You Move!==="
340 BEEP 10,100
350 GOTO @REPLAY
360 '
370 @PLAYL
380 PLAY "T150L8CFFFFFCFFF":RTN
390 @PLAYS
400 PLAY "T150L16CFFFFFCFFF":RTN

材料

赤外線センサー

PanasonicのAMN31111(標準検出タイプ・検知範囲5m・デジタル出力)を使っています。

人間や動物など動いているもの(=赤外線量が変化するもの)を検知します。逆に止まっているものは検知できないので、今回はこの性質を利用してゲームにしています。
なお、検知範囲10mの「AMN34111」を使った方が、遊びとしては面白いかもしれません。いずれ試してみたいです。
また、用途によってはアナログ出力タイプの「AMN21111」を使うといいかもしれません。

スピーカー

音を大きく出すために、共立電子の「IchigoJamエイリアンスピーカー」を使っています。

その後(7/18)

赤外線センサーをAMN34111(検知範囲10m)に変えてみました。
が、実際にプレイしてみると「多少検知範囲が広くなったかな?」という程度です。
アナログタイプのセンサーにして、しきい値を調整した方がいいかもしれません。