SHIROのIchigoJam日記

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

自動クリスマスツリー2022

*この記事はIchigoJam Advent Calendar 2022に参加しています。

以前作った自動クリスマスツリー
www.ichigojaman.jp
の新バージョンです。
前回は発振回路を3個組み合わせて無理矢理ランダムにLEDを光らせたのですが、今回は線形帰還シフトレジスタ回路を使って疑似乱数で光らせています。
動画はこちら。

www.youtube.com

先日公開したクリスマスツリー+植木鉢基板
www.ichigojaman.jp
のように、IchigoJamに差してプログラムで光らせることはできませんが、部品数が少ないので手軽に作れます。
電子工作教室のネタとしていかがでしょうか。

回路図


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

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

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

基板データ

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

(C) 2022 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