SHIROのIchigoJam日記

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

電子ルーレット99

★この記事は「IchigoJam Advent Calendar 2025」に登録しています。

7セグメントLED×2個で、00~99の2桁の数字を表示するルーレット基板です。
電波新聞社「電子工作マガジン」2025年夏号P31~35の記事「電子ルーレットを作ろう」(東亜無線電機株式会社 栗田昌治氏)を参考にしました。

4511版


電子工作マガジンの栗田氏の回路とほぼ同じで、10進バイナリカウンタ4518の出力を、7セグメントデコーダー4511を通して、LEDの数字を光らせています。
発振回路をトランジスタ弛張発振にするなど、若干変更して部品数を減らしています。

回路図

基板データ

*この基板データは、CC BYライセンスとします。どうぞご利用ください。

(C) 2025 Shiro Saito (https://www.ichigoaman.jp)

4026版


発振回路に7400、7セグメントデコーダーに4026を使って、さらに部品数を減らしました。
また上記の4511版だと、数字が00→01→02→…→98→99→00と1ずつカウントアップしていくので、ボタンを押す時間で「50番代を狙おう」などと数字をある程度狙えてしまいます。
この4026版は、10の位と1の位を別々の発振回路で高速に動かすことで、出したい数字を狙えないようにしています。

回路図

IchigoJamプログラム版


IchigoJamのプログラムで、00~99の2桁ルーレットを作ってみました。
何かキーを押すと、ルーレットが回ります。
ただ数字を表示するだけではつまらないので、8倍角で大きく表示しています。

10 '*ROULETTE99
20 CLV:SRND TICK()+ANA(2):CLS
30 @SHT
40 LC 12,23:?"PUSH KEY";
50 IF !INKEY() CONT
60 LC 12,23:?"        ";
70 FOR T=1 TO 5
80 S=RND(100)
90 GSB @PRTS
100 BEEP 10,2
110 NEXT
120 GOTO @SHT
130 @PRTS
140 N=S/10:X=9
150 GSB @PRT1
160 N=S%10:X=15
170 GSB @PRT1
180 RTN
190 @PRT1
200 A=48+N
210 FOR I=0 TO 6
220 D=PEEK(A*8+I):V=#A00+X+I*32:B=`10000000
230 FOR J=0 TO 5
240 POKE V+J,D&(B>>J)>0
250 NEXT
260 NEXT
270 RTN

自動クリスマスツリー2025

※2025/11/29:回路・基板更新、クリスマスツリープログラム追加

以前作った自動クリスマスツリー
www.ichigojaman.jp
を若干変更しました。

※2025/11/29変更

スイッチをONにすると、8個のLEDがランダムに光ります。
電子工作教室のネタとしていかがでしょうか。

回路図


※2025/11/29更新

トランジスタ2個の弛張発振回路で約1Hzのクロック信号を生成して、シフトレジスタ・4015のクロック端子へ入力します。
4015の出力が1ビットずつシフトして、8個のLEDが光ります。
その出力の一部をXORゲート・4030を通して、4015のシリアル入力へ帰還しています(線形帰還シフトレジスタ)。

XORゲートの真理値表。入力A,Bが同じ時はL、違う時はHを出力する。
BASICなら「Y=A^B」。

そのままの回路だと電源ON直後は4015の出力が全てLで、それらをXOR演算したシリアル入力もLのままでLEDがいつまでも光らないので、余ったXORゲート1個でVCC(=H)とのXORを取って反転させています(=NOT、インバータと同じ動作)。

基板データ

*同じ基板を2枚配置しています。
*この基板データは、CC BYライセンスとします。どうぞご利用ください。

(C) 2025 Shiro Saito (https://www.ichigoaman.jp)

材料

だいたい以下の順番ではんだ付けすると作りやすいです。

疑似乱数プログラム


今回の回路と同じ線形帰還シフトレジスタの疑似乱数プログラムをIchigoJamで作ってみました。
1秒に1ビットずつシフトして、8ビットの疑似乱数(2進数と10進数)を表示します。

10 '*LFSR
20 CLV:CLS
30 @LOOP
40 D=0
50 FOR B=7 TO 0 STEP -1
60 ?[B];
70 C=[B]<<B
80 D=D+C
90 NEXT
100 ?"=";D
110 A=[7]^[5]
120 A=A^[4]
130 A=A^[3]
140 A=!A
150 WAIT 60
160 FOR B=7 TO 1 STEP -1
170 [B]=[B-1]
180 NEXT
190 [0]=A
200 GOTO @LOOP

クリスマスツリープログラム


ツリーの8個のLEDがランダムに光るプログラムです。

10 '*XMAS TREE
20 CLV:VIDEO 3:CLS
30 ?"      O      "
40 ?"     * *     "
50 ?"    O   O    "
60 ?"   *     *   "
70 ?"  O       O  "
80 ?" *         * "
90 ?"O*****O*****O"
100 ?"     * *"
110 ?"     * *"
120 LET [0],#60,#42,#82,#24,#A4,#06,#66,#C6
130 GSB @LIGHT
140 @LOOP
150 Z=2
160 GSB @LIGHT
170 WAIT 60
180 GOTO @LOOP
190 @LIGHT
200 FOR L=0 TO 7
210 LC [L]/16,[L]%16
220 ?CHR$(232+RND(Z))
230 NEXT
240 RTN

簡易入館者カウンター

新しいセンターの玄関に、IchigoJam+赤外線人感センサーを使った簡易入館者カウンターを付けました。

LCDシールドに付けた液晶画面で、時刻や人数カウントを表示します。
時刻は、以前に作った時計モジュールと同じく、RTCモジュールから読み出します。

LCDシールド

LCDシールドはかなり昔に作ったのですが、これまでブログで書いていなかったので改めて掲載します。
IchigoJamのSWITCHコマンドで切り替えて、小さな液晶に画面を表示できます。

回路図

基板データ

*この基板データは、CC BYライセンスとします。どうぞご利用ください。

(C) 2025 Shiro Saito (https://www.ichigoaman.jp)

材料

だいたい以下の順番ではんだ付けすると作りやすいです。

※以下はEEPROMを使わない場合は不要です。

※以下は赤外線人感センサーです。使わない場合は不要です。

入館者カウンタープログラム

10 @ARUN:'*Counter*
20 CLV:SWITCH 1:CLS:OUT 5,-1
30 GSB @TIMEREAD
40 ?"*START ";DEC$(H+100,2);":";DEC$(M+100,2)
50 @LOOP
60 I=IN(10):LED I
70 IF I=1 AND J=0 GSB @COUNT
80 J=I
90 GOTO @LOOP
100 @COUNT
110 C=C+1
120 GSB @TIMEREAD
130 LC 0,2
140 ?DEC$(H+100,2);":";DEC$(M+100,2);" ";C
150 WAIT 180
160 RTN
170 @TIMEREAD
180 POKE #700,0
190 IF I2CR(#68,#700,1,#701,7) ERR
200 X=PEEK(#703)
210 H=X>>4*10+X&15
220 X=PEEK(#702)
230 M=X>>4*10+X&15
240 X=PEEK(#701)
250 S=X>>4*10+X&15
260 RTN