早押しボタンに司会者用コントロールを追加。プログラム作成。
Ichigojamの基板に7セグLEDを表示する回路基板を乗っけて、拡張性のあるインターフェイスができましたので、早押しボタンで回答者を一桁の数字を表示する仕組みにしました。
IN1,IN2,IN3,IN4,OUT1,OUT2,OUT3 (IN4~7に設定) で 回答者4名と出題者1名のボタンを制御しています。
プログラムは下記の通り。
(注)行内の空白や、注釈は説明用に付与をしました。 そのためプログラム入力するときには削除してください。そうしないとプログラム制限を超えメモリーオーバーになります。
100 '20170219 HC595 7SEG 110 cls: clv: OUT1,-1: OUT2,-1: OUT3,-1 'OUTの-1設定でINに変更 120 LET [90],63,6,91,79,102,109,125,39,127,111 '[90]からの10個配列で、7SEGの表示を設定 130 @INIT 140 P=0:GSB @SEG_DISP 150 @PRE 160 ifIN(7)<>0thenWAIT1:GOTO@PRE '7:司会者「出題」ボタン 170 Q=IN()&15 ’出題ボタンを押したときにフライング者を特定 Q:4ビットの押下状態を記憶 180 H=80:LET[80],0,0,0,0 :K=80:G=0 '[80]からの4個配列で、回答先着順を記憶 H;回答配列添え字 K:回答権番号 190 PLAY "T260 <G8B8": WAIT30 '出題のジングル 200 GSB @SEG_OFF ’出題中を表す、ドットのみの表示 210 @Thinking 220 B=in() 230 if B&(112+Q)=(112+Q) then GOTO @Thinking 'B: IN配列、今回7つ分を判断するため127(112+15)でモニタ繰り返し Q:4ビットで回答権がないものとマスクして 有効なキーが押されたとき次の行へ遷移 240 'SENCE 250 forI=1to7: if B>>(I-1)&1 = 0 then P=I 'P: 回答者を特定 260 next 270 ifP>4then GOTO@CTRL 'P:5 正解 6: 不正解/次点 7:リセット 280 Q = Q&(15-1<<(P-1)): [H]=P :if[H-1]=[H] goto @Thinking else H=H+1 'Q:回答権は一人一回 H:回答配列 290 ? "Touch No = ",[80],[81],[82],[83] 300 if G=0 then F=[K] :GSB390:PLAY "T260 O5C8":G=1 ’音を出すのは一回だけ F:7SEGの表示数字 310 goto @Thinking 320 @CTRL 330 if P=5 then PLAY "T260 O5GCGCGC": goto@INIT 340 if P=6 then PLAY "T260 EEE": K=K+1: G=0: WAIT20 ’K:回答順位 350 if P=7 then K=84 ’K:84 回答順位は80~83のため閾値を84とする 360 F=[K]:if K=84 then GOTO @INIT 370 GSB @SEG_DISP : goto @Thinking 380 '---SUB-RATCH--- 390 @SEG_DISP ’[90]から[99]までのLEDの表示数字構成からビットごとに操作 400 OUT5,0:FORS=7TO0STEP-1:OUT4,0:OUT6,[F+90]>>S&1:OUT4,1:NEXT:OUT5,1 410 RTN 420 @SEG_OFF 'ドットのみ表示 430 OUT5,0:OUT4,0:OUT6,1:OUT4,1:FORS=7TO1STEP-1:OUT4,0:OUT6,0:OUT4,1:NEXT:OUT5,1 440 RTN