目次
前
次
モグラたたき(ブレッドボード)
ブレッドボードに、LEDとスイッチをつけて
「モグラたたき」を作っていきます。
ブレッドボードに6個のLEDがあるとして
ランダム点灯するプログラムを作成。
ブレッドボードにLEDを配置すると、以下。
LEDを選ぶため、乱数を使います。
ブレッドボード上のLEDをランダムに
点灯できるかをプログラムでチェック。
10 '
20 @LOOP
30 GSB @LOFF
40 R=RND(6)+1:? R;
50 OUT R,1:WAIT 60
60 IF BTN() GOTO @EXIT
70 GOTO @LOOP
80 @EXIT
90 CLS:GSB @LOFF:END
100 @LOFF
110 FOR I=1 TO 6
120 OUT I,0
130 NEXT
140 RETURN
ひとつの入力で、複数のスイッチのどれが押されたか
を知るために、次の回路を利用することに。
(抵抗値は、すべて同じで10kΩとします。)
スイッチを押したときに、A/D変換器では
どのような値になるのか、spread sheet
で計算。
計算は、分子に1024をかけて、その値を分母で
割って、整数になるようにしてあります。
ANA(2)で、値を読み込んで、どのスイッチが
押されたのかを、判定すればよいでしょう。
値を読み込んで、スイッチの値を返す
サブルーチンを書いてみます。
200 @GETV
210 V=ANA(2)
220 S=0
230 IF 500 < A AND A < 550 S=1
240 IF 660 < A AND A < 700 S=2
250 IF 740 < A AND A < 800 S=3
260 IF 800 < A AND A < 830 S=4
270 IF 830 < A AND A < 860 S=5
280 IF 860 < A AND A < 900 S=6
290 RETURN
ゲームなので、モグラの番号とスイッチの
番号が同じなら、ヒットとして音を出して
わかるようにしておきましょう。
300 @UPDATE
310 B=100
320 T=TICK()
330 IF R != S GOTO 360
340 BEEP 10,B
350 G=G+10
360 LC 5,20:? G,"time",T
370 IF T > 3600 A=1
380 RETURN
ヒットしたときに、得点が10点ずつ増える
ようにしてみました。
また、1分でゲームオーバーになるように
しています。
初期化処理も用意。
400 @INIT
410 CLS
420 A=0:G=0:B=100
430 CLT
440 RETURN
まとめてみると、以下。
10 ' test9
20 GSB @INIT
30 @LOOP
40 R=RND(6)+1
50 GSB @LOFF:GSB @LON:GSB @GETV:GSB @UPDATE
60 IF A=0 GOTO @EXIT
70 GOTO @LOOP
80 @EXIT
90 CLS:? "GAME OVER"
95 END
100 @LOFF
110 FOR I=1 TO 6
120 OUT I,0
130 NEXT
140 RETURN
150 @LON
160 OUT R,1
170 RETRUN
200 @GETV
210 V=ANA(2)
220 S=0
230 IF 500 < A AND A < 550 S=1
240 IF 660 < A AND A < 700 S=2
250 IF 740 < A AND A < 800 S=3
260 IF 800 < A AND A < 830 S=4
270 IF 830 < A AND A < 860 S=5
280 IF 860 < A AND A < 900 S=6
290 RETURN
300 @UPDATE
310 T=TICK()
320 IF R != S GOTO 350
330 BEEP 10,B
340 G=G+10
350 LC 5,20:? G,"time",T
360 IF T > 3600 A=1
370 RETURN
400 @INIT
410 CLS
420 A=0:G=0:B=100
430 CLT
440 RETURN
LEDの回路は、以下。
目次
前
次