SHIROのIchigoJam日記

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

LED64Stack-R

LEDマトリックスを複数スタックして点灯させる「LEDマトリックス名札」を以前に作りました。
www.ichigojaman.jp
プログラムでLEDをスキャンしなくても手軽に点灯できるのですが、LEDマトリックス1個に付きLPC1114が1個必要です。今は世界的な半導体不足でLPC1114が入手困難なので、これは作りづらいです。
そこで手に入りやすいロジックICを使って、複数スタックもできる基板を作ってみました。
IchigoJam Rにつないで使います。(IchigoJam Sでは速度が全然足りません)


シフトレジスタ74HC595と、行方向にスキャンするための3to8ラインデコーダ74HC138の2個のICを搭載しています。


裏面で、ピンソケットとピンヘッダで接続してスタックします。

f:id:shiro0922:20210808180400p:plain
回路図は上のとおりです。
74HC595へ1列(8ビット)分の表示データをシリアル転送、74HC138で行方向へスキャンして表示します。
74HC595のQH'出力を次の基板のシリアル入力へつないでいるので、基板をスタックすると表示データを連続して送れます。
(2個スタックしたら16ビット分、3個スタックしたら24ビット分をシリアル転送した後に、ラッチクロックを送ればLEDへ出力される)
IchigoJam Rの出力ポートは、以下のようにつながっています。

IchigoJam R LED64Stack-R
OUT1~OUT3 74HC138・A~C入力
OUT4 74HC595・シリアル入力
LED 74HC595・シリアルクロック
OUT8 74HC595・ラッチクロック

作って実際に動かしてみると、IchigoJam Rでもスキャン速度が足りなくて、LEDの輝度が低いです。

周囲を暗くすると、ちゃんと見えます。

2個スタックすると、シリアルで送るデータが8bit→16bitと2倍になるので、さらにスキャン速度が落ちてLEDが暗くなってしまいます。

周囲を暗くすると、ちゃんと見えます。

…というわけで、LEDがかなり暗くて、残念な結果になりました。
暗い場所なら結構見えるので、使い方次第かもしれません。

LEDマトリックスを1個点灯させればいいなら、以前に作った「LEDマトリックススキャン」の方が回路も簡単ですし、IchigoJam Sでも十分光らせることができます。そちらをお勧めします。
www.ichigojaman.jp

基板データ

f:id:shiro0922:20210808182630p:plain

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

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

プログラム

1文字表示

LEDマトリックス1個に指定した文字を表示します。
30行を改造すれば、表示する文字を変えられます。

10 @ARUN:'*Matrix Chr
20 CLV:VIDEO 0
30 A=ASC("A")*8
40 V=#900
50 FOR E=0 TO 7
60 D=PEEK(A+E)
70 M=128
80 FOR B=0 TO 7
90 POKE V,D&M>0
100 V=V+1:M=M>>1
110 NEXT
120 NEXT
130 @LOOP
140 V=#900
150 FOR Y=0 TO 7
160 FOR B=0 TO 7
170 OUT 4,PEEK(V)
180 LED 1:LED 0
190 V=V+1
200 NEXT
210 OUT 8,1:OUT Y
220 NEXT
230 GOTO @LOOP

2文字表示

文字コードが連続した2文字を、LEDマトリックス2個に表示します。
30行を改造すれば、表示する文字を変えられます。

10 @ARUN:'*Matrix Chr2
20 CLV:VIDEO 0
30 A=ASC("A")*8
40 V=#900
50 FOR E=0 TO 7
60 D=PEEK(A+8+E)
70 GSB @PUSH1
80 D=PEEK(A+E)
90 GSB @PUSH1
100 NEXT
110 @LOOP
120 V=#900
130 FOR Y=0 TO 7
140 FOR B=0 TO 15
150 OUT 4,PEEK(V)
160 LED 1:LED 0
170 V=V+1
180 NEXT
190 OUT 8,1:OUT Y
200 NEXT
210 GOTO @LOOP
220 @PUSH1
230 M=128
240 FOR B=0 TO 7
250 POKE V,D&M>0
260 V=V+1:M=M>>1
270 NEXT
280 RTN