SHIROのIchigoJam日記

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

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の輝度があまり明るくないのと、色がそれぞれ違うこともあって、うまく見えませんでした(^_^;)