SHIROのIchigoJam日記

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

LEDマトリックス名札

以前作ったLEDマトリックス基板「LED64Stack」
www.ichigojaman.jp
を4個連結して、名札にしてみました。
動画はこちら。

www.youtube.com

f:id:shiro0922:20210714142940j:plain
LED64Stackを横に4個連結。全体を名札形状に収めるために、専用コントローラーIchigoJam基板を新規に作りました。
首にかけるとこんな感じ。
f:id:shiro0922:20210714143800j:plain

ボタンを押すとダッシュゲームが遊べます。
f:id:shiro0922:20210714143024j:plain

今回はLEDマトリックスに、100均で買った「暗記したじき」の緑色をはさみで切って、接着剤で貼り付けています。これで緑色のLEDがかなり見やすくなります。

ただ、最近IC・LPC1114が品薄で入手困難になっています。LEDマトリックス1個に付きLPC1114を1個使う今回の方式は、あまり他の方には勧められません。LEDマトリックスを光らせる別の方式を現在検討中です。

コントローラー基板データ


電源のレギュレータは、LEDマトリックス4個を動かすということで、800mA出力のTO-252パッケージ品を使いました。コンデンサは、電解コンデンサ10μFとセラミックコンデンサ0.1μFを使っています。

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

(C) 2020 Shiro Saito (https://www.ichigojaman.jp)

プログラム

ファイル0:名前表示

IchigoJamの文字フォントデータを配列変数にコピーして表示しています。40行の文字列データを変更すると、表示する文字が変えられます。
ボタンを押すと、ファイル1のプログラムを実行します。

10 @ARUN:'*LED64Stack Saito
20 VIDEO 0:UART 1:CLS:?
30 GSB @PRTCLR
40 P="サイトウ":L=3
50 FOR X=0 TO L
60 C=PEEK(P+X)
70 GSB @PRTC
80 NEXT
90 IF !BTN() CONT
100 IF BTN() CONT
110 GSB @PRTCLR
120 SRND TICK()
130 LRUN 1
140 @PRTCLR
150 FOR I=1 TO 4
160 ?"MATLED SHOW 0000000000000000"
170 NEXT:RTN
180 @PRTC
190 A=C*8
200 FOR B=0 TO 7
210 [B]=PEEK(A+B)
220 NEXT
230 M=128
240 FOR I=0 TO 7
250 D=0
260 FOR B=7 TO 0 STEP -1
270 D=D<<1
280 D=D+([B]&M>0)
290 NEXT
300 ?"MATLED PUSH ";D
310 M=M>>1
320 NEXT
330 RTN

ファイル1:ダッシュゲーム

ボタンを連打して、ランナーを右端→左端へ走らせてください。ゴールするとタイムが表示されます。ボタンを押すとリプレイします。
数字・ランナーとも独自のデータを用意してPUSHして表示しています。が、文字フォントデータを使っても良かったかもしれません。

10 '*DASH64
20 UART 1:CLS:?
30 GSB @PRTCLR
40 LET [0],#3E,#41,#3E,0,#42,#7F,#40,0
50 LET [8],#62,#51,#4E,0,#22,#49,#36,0
60 LET [16],#4F,#49,#31,0,#3E,#49,#31,0
70 LET [24],#3E,#49,#31,0,#03,#71,#0F,0
80 LET [32],#36,#49,#36,0,#26,#49,#3E,0
90 FOR N=3 TO 1 STEP -1
100 GSB @PRTN
110 BEEP:WAIT 60
120 NEXT
130 GSB @PRTCLR
140 LET [90],#8C,#C8,#2E,#7E,#48,#D8
150 FOR L=0 TO 5
160 ?"MATLED PUSH ";[90+L]
170 NEXT
180 CLT
190 FOR R=1 TO 26
200 IF !BTN() CONT
210 IF BTN() CONT
220 ?"MATLED PUSH 0"
230 NEXT
240 T=TICK()
250 BEEP 10,60
260 WAIT 60
270 N=T/600:IF N>9 N=9
280 IF N>0 GSB @PRTN
290 T=T-N*600
300 N=T/60
310 GSB @PRTN
320 T=T-N*60
330 ?"MATLED PUSH 128"
340 ?"MATLED PUSH 0"
350 N=T/6
360 GSB @PRTN
370 IF !BTN() CONT
380 IF BTN() CONT
390 RUN
400 @PRTCLR
410 FOR I=1 TO 4
420 ?"MATLED SHOW 0000000000000000"
430 NEXT:RTN
440 @PRTN
450 FOR I=0 TO 3
460 ?"MATLED PUSH ";[N*4+I]
470 NEXT
480 RTN