SHIROのIchigoJam日記

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

だるまさんがころんだ(音声バージョン)


PCN通販で発売された音声ボード「Ichigo-ice」、100円スピーカー、赤外線センサーを使って、以前作った「だるまさんがころんだ」の音声バージョンを作ってみました。
やっぱり「だるまさんがころんだ」と声でしゃべってくれると、とても楽しいです(^_^)

遊び方

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

センサーの接続回路図はこちら。
f:id:shiro0922:20190911161952p:plain
特に1m以内に近づくと、センサーの感度が高くてすぐに「うごいた!」と言われてしまうので、そろそろと1mまで近づいたら、あとは一気にボタンへダッシュしましょう(^_^)

材料

プログラム

10 @ARUN:'*Darumasan ga koronda-ice
20 CLV:LED 0
30 LET [1],"ichi","ni","san","si","go","roku","nana","hati","kyu-","ju-"
40 WAIT 60
50 FOR T=1 TO 10
60 LED 1:S=[T]:GSB @VS
70 LED 0:WAIT 60
80 NEXT
90 @GLOOP
100 '
110 LED 1
120 L=55:IF RND(3)=0 L=65
130 GSB @VL
140 S="darumasangakoronda."
150 GSB @VS
160 @BLOOP
170 IF BTN() GOTO @GWIN
180 U=I2CR(46,#708,2)
190 IF PEEK(#709)=42 GOTO @BLOOP
200 WAIT 30
210 LED 0
220 '
230 C=3+RND(3):CLT
240 @CLOOP
250 IF IN(2) GOTO @GEND
260 IF TICK()<C*60 GOTO @CLOOP
270 GOTO @GLOOP
280 '
290 @GWIN
300 S="$"
310 GSB @VS
320 @ELOOP
330 U=I2CR(46,#708,2)
340 IF PEEK(#709)=42 GOTO @ELOOP
350 L=55
360 GSB @VL
370 LED 1
380 S="maketa-"
390 GSB @VS
400 @REPLAY
410 WAIT 60
420 IF !BTN() CONT
430 RUN
440 '
450 @GEND
460 L=55
470 GSB @VL
480 LED 1
490 S="ugoita."
500 GSB @VS
510 GOTO @REPLAY
520 '
530 @VL
540 POKE #700,35,87,48,48,50,L,48,13
550 U=I2CW(46,#700,8)
560 RTN
570 '
580 @VS
590 U=I2CW(46,S,LEN(S))&I2CW(46,13)
600 RTN

2台連動信号機

以前作った立形信号機
www.ichigojaman.jp
を2台ケーブルでつないで、連動させてみました。
動画はこちら。

【IchigoJam】2台連動信号機


歩行者用信号機基板にある、TX,RX,GNDパッドをクロスで結線します。
(TX→RX、RX→TX、GND→GND)

プログラム

全体は親機のプログラムで動いています。子機は親機から飛んできたコマンド通りに、各LEDを点灯/消灯しているだけです。
コマンドは文字コードで送っています(ポート番号×10+0または1)。そのままだとコントロールコードになってしまって動作がおかしくなるので、160を足してカタカナコード領域にして送受信しています。

親機プログラム

10 @ARUN:'*T.LIGHT-P
20 CLS:UART 1
30 OUT 0
40 FOR I=1 TO 6:?CHR$(160+I*10):NEXT
50 @LOOP
60 OUT 1,1
70 OUT 5,1
80 ?CHR$(160+31)
90 ?CHR$(160+61)
100 WAIT 300
110 FOR I=1 TO 3
120 ?CHR$(160+61)
130 WAIT 30
140 ?CHR$(160+60)
150 WAIT 30
160 NEXT
170 ?CHR$(160+51)
180 WAIT 120
190 OUT 1,0
200 OUT 2,1
210 WAIT 120
220 OUT 2,0
230 OUT 3,1
240 WAIT 120
250 ?CHR$(160+30)
260 ?CHR$(160+11)
270 OUT 5,0
280 OUT 6,1
290 WAIT 300
300 FOR I=1 TO 3
310 OUT 6,1
320 WAIT 30
330 OUT 6,0
340 WAIT 30
350 NEXT
360 OUT 5,1
370 WAIT 120
380 ?CHR$(160+10)
390 ?CHR$(160+21)
400 WAIT 120
410 ?CHR$(160+20)
420 ?CHR$(160+31)
430 WAIT 120
440 OUT 3,0
450 ?CHR$(160+50)
460 GOTO @LOOP

子機プログラム

10 @ARUN:'*T.LIGHT-C
20 CLS:UART 0,1
30 OUT 0
40 @LOOP
50 K=INKEY()
60 IF K<160 GOTO @LOOP
70 K=K-160
80 A=K/10
90 B=K%10
100 OUT A,B
110 GOTO @LOOP

LED4BTN

だいぶ前の話ですが、aitendoのLED付きタクトスイッチを4個並べたシールド基板を作ってみました。
f:id:shiro0922:20190606172404j:plain

回路は単純で、LEDをOUT1~4に、タクトスイッチをIN1~4につないでいます。
f:id:shiro0922:20190911051820p:plain

LEDとスイッチが一体だと、いろいろ遊べて面白いです。
http://www.aitendo.com/product/7059www.aitendo.com

プログラム0:セレクタ

LED1~3が点灯するので、どれかを押すと、スロット1~3のプログラムを起動します。

10 '*Selecter
20 CLV
30 OUT 7
40 @LOOP
50 IF !IN(1) G=1
60 IF !IN(2) G=2
70 IF !IN(3) G=3
80 IF !G GOTO @LOOP
90 BEEP
100 OUT 1<<(G-1)
110 WAIT 30
120 OUT 0
130 LRUN G

プログラム1:信号機

青・黄・赤の車用信号機です。

【IchigoJam】LED4BTN:信号機

1 '*Traffic Light
10 OUT 1,1
20 WAIT 300
30 OUT 1,0
40 OUT 2,1
50 WAIT 120
60 OUT 2,0
70 OUT 3,1
80 WAIT 300
90 OUT 3,0
100 GOTO 10

プログラム2:サイモン(記憶ゲーム)

起動すると、LED4個のうちのどれか1個が点灯します。
そのボタンを押すと、次は出題が1個増えます。間違えないように順番にボタンを押してください。
回答をミスするとゲームオーバーです。ボタン1を押すとリプレイします。

【IchigoJam】LED4BTN:サイモン

10 '*SIMON
20 CLV
30 SRND TICK()
40 OUT 0
50 WAIT 60
60 @QUEST
70 M=M+1
80 [M]=RND(4)+1
90 FOR I=1 TO M
100 N=[I]
110 OUT N,1
120 GSB @PLAY
130 OUT N,0
140 NEXT
150 @ANSWER
160 A=0
170 @ALOOP
180 N=0
190 FOR I=1 TO 4
200 IF IN(I)=0 THEN N=I
210 NEXT
220 IF N=0 THEN GOTO @ALOOP
230 A=A+1
240 IF N<>[A] GOTO @END
250 OUT N,1
260 GSB @PLAY
270 OUT N,0
280 IF A<M GOTO @ALOOP
290 WAIT 60
300 GOTO @QUEST
310 @END
320 OUT 15
330 BEEP 30,120
340 WAIT 120
350 @RESTART
360 IF IN(1)=0 THEN RUN ELSE GOTO @RESTART
370 @PLAY
380 IF N=1 PLAY "R32D"
390 IF N=2 PLAY "R32G"
400 IF N=3 PLAY "R32A"
410 IF N=4 PLAY "R32B"
420 WAIT 30
430 RETURN

プログラム3:モグラたたき

こういうスイッチがあると、やっぱりモグラたたきをやりたくなります。
モグラを30秒間叩くと、叩いた数が2進数で表示されます(最大15匹まで)。
叩くとどんどん速くなるので、ついていけません(^_^;)

【IchigoJam】LED4BTN:モグラたたき

10 '*Mogura Tataki
20 CLV
30 SRND TICK()
40 L=1800:N=80
50 WAIT 60
60 CLT
70 @LOOP
80 OUT 0
90 WAIT 10
100 @MRND
110 R=RND(4)+1
120 IF R=M GOTO @MRND
130 M=R
140 OUT M,1
150 BEEP 30
160 W=TICK()/N
170 @TATAKU
180 IF IN(M)=0 GOTO @HIT
190 IF TICK()/N=W GOTO @TATAKU
200 IF TICK()<L GOTO @LOOP
210 OUT 0
220 BEEP 30,60
230 WAIT 60
240 OUT S
250 IF IN(1) CONT
260 RUN
270 @HIT
280 OUT 0
290 BEEP
300 S=S+1
310 IF S>15 S=15
320 N=N-4
330 WAIT 10
340 GOTO @LOOP

ちなみにバーサライタも試してみましたが、LEDの輝度があまり明るくないのと、色がそれぞれ違うこともあって、うまく見えませんでした(^_^;)