Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2017/11/27 21:19:06

MixJuice GET URL : kidspod.club/mj/432

6灯LEDルーレット

【遊び方】
IchigoJam基板のOUTポート1から6に、適当なLEDを付けてください。
できれば、LEDをOUT1~6の右回り順に円形に並べましょう。
なお、一応ディスプレイにも数を表示するので、LEDが付いていなくても遊べます。

1.IchigoJam基板のタクトスイッチ(SW1)を押すとルーレットが回転します。
2.もう一度押すと、徐々に回転速度が落ちてやがて止まります。
3.止まった箇所のLEDを点滅して、当たりを知らせます。
4.1.から繰り返します。

ルーレットが回転してから10秒以経つとBEEPを止めるようにしました(BEEP音苦情対策)。

季節柄、サイコロ代わりにいいかもしれません。

【変数表】
P OUTポート番号(1~6)※あえて初期化せず
F ルーレットの状態フラグ( 0:回転!BTN 1:回転BTN待ち 2:停止)
W ルーレット回転中のWAIT値
   F=0or1の時は固定値で、F=2のとき徐々に値を増やす(だんだん遅くなる)
R ルーレットを停止するWAIT値

⬛おまけ1(LEDがあるなら、これで十分かも・・)
10 OUT 1<<(TICK()/2%6):IF !BTN() CONT ELSE WAIT180:CONT

⬛おまけ2
まったく同じロジックでプログラムコードの短縮版を画像の4枚目に追加(2017/11/29up)。

  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

SOURCE CODE

10 '6DOTルーレット[ボタンスタート] V1.0 TOMO(2017/11)
20 IF BTN()=1 THEN CONT
30 PRINT
40 PRINT
50 PRINT"Push the button(SW2)!"
60 LED 1
70 OUT P,TICK()/30%2 :IF BTN()=0 THEN CONT
80 OUT 0
90 CLT
100 LET F,0
110 LET W,2
120 @LOOP
130 OUT P,1
140 PRINT P;
150 IF F=0 AND BTN()=0 THEN LET F,1
160 IF F=1 AND BTN()=1 THEN LET F,2 :LET R,RND(20)+20
170 IF F=2 THEN LET W,W+2 :IF W>R THEN BEEP 5,20 :WAIT 30 :RUN
180 IF F=2 OR TICK()<600 THEN BEEP
190 WAIT W
200 OUT P,0
210 LET P,ABS(P)+1
220 IF P>6 THEN LET P,1
230 GOTO @LOOP

COMMENT

Kidspod運営チーム
Kidspod運営チーム2017/12/01 13:48:20

ところで、90行目のCLTLは、CLTのタイプミスかと思われます。

Kidspod運営チーム
Kidspod運営チーム2017/12/01 13:48:14

ルーレットのだんだん止まるところを再現するなど、プログラムも素敵ですが、それ以上に自作のハードウェアが素晴らしいです! サイコロを使うより何倍も楽しそうですね。短縮版まで用意していただいて、ありがとうございます。