SHIROのIchigoJam日記

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

LEDマトリックスペンダント

IchigoJam Advent Calendar 2021にエントリーしています。

LEDマトリックスで文字列を表示するペンダントを作ってみました。
USBキーボードをつないで好きな文字列を設定して、自分だけのオリジナルペンダントに(^_^)
動画はこちら。


一応ペンダントということにしていますが、基板の四隅に穴を空けてあるので、ひもやキーホルダーなどを好きに付けてください。


基板は基本的にIchigoJam Rの互換機で、RISC-Vチップ・GD32VF103CBT6が載っています。
以前作った「LEDマトリックススキャン」と同じく、3to8ラインデコーダ74HC138(こちらはTSSOP版)でスキャンして、LEDマトリックスを光らせています。


裏面には電源の単4電池×3本。

f:id:shiro0922:20211221210717j:plain
キーボードをつなぐと、好きな文字列を設定して表示できます。

ただ最近の半導体不足で、RISC-VのICが全然手に入りません。
私は手持ちの在庫で何とか作りましたが、他の皆さんには今はあまりお勧めできません。

回路図

f:id:shiro0922:20211221165828p:plain

基板データ

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

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

材料

プログラム

以下のプログラムをファイル0に入れて動かしています。

  • 電源スイッチをONにすると、LEDマトリックスに文字列を右から左へ流して表示します。初期状態では「LED」の3文字を表示します。
  • USB端子にキーボードをつないで電源をONにして、文字列表示の最後まで基板のボタンを長押しすると、文字入力モードになります。キーボードから1文字ずつ入力すると、その文字列を流してプレビューします。最大15文字まで設定できます。
  • キーボード入力はIchigoJam仕様なので、アルファベットは普通に押すと大文字、Shiftキーを押しながらだと小文字になります。(気になる人はCapsLockを押して逆にしてください)。プレビューがちょっと変になりますが、左Ctrl+左Shiftを押すと、ローマ字入力でカタカナも設定できます。
  • Enterキーを押すと文字列を確定して、通常表示モードに戻ります。入力途中で文字を打ち間違えた時は、BackSpaceキーを押すと1文字削除します。
  • 入力した文字列は保存されるので、次回から電源ONでその文字列が表示されます。オリジナルのメッセージペンダントにしてみてください。
10 @ARUN:'*Key in Flow
20 CLV:VIDEO 0:W=50
30 FOR P=1 TO 11:OUT P,0:NEXT
40 S=#FF0:IF !PEEK(S) GSB @INIT
50 @LOOP
60 GSB @F1
70 IF BTN() GSB @KIN
80 GOTO @LOOP
90 @KIN
100 BEEP:OUT 0:Y=0
110 FOR I=0 TO 15:POKE S+I,0:NEXT
120 IF BTN() CONT
130 @K1
140 K=INKEY():IF !K CONT
150 IF K=10 BEEP:SAVE 0:RTN
160 IF K=8 POKE S+Y-1,0:Y=Y-2:GOTO @K2
170 POKE S+Y,K
180 POKE S+Y+1,0
190 @K2
200 BEEP 30,3
210 FOR I=0 TO 7:[I]=0:NEXT
220 GSB @F1
230 OUT 0
240 FOR I=0 TO 7:[I]=0:NEXT
250 Y=Y+1:IF Y<15 GOTO @K1
260 BEEP:RTN
270 @F1
280 L=LEN(S)
290 IF !L RTN
300 FOR X=0 TO L-1
310 A=PEEK(S+X)*8
320 FOR F=0 TO 7
330 M=128>>F
340 FOR B=0 TO 7
350 D=PEEK(A+B)
360 [B]=([B]<<1)+((D&M)>0)
370 [B]=[B]&255
380 NEXT
390 FOR T=1 TO W
400 FOR Z=0 TO 7:OUT[Z]+256*Z:NEXT
410 NEXT
420 NEXT
430 NEXT
440 RTN
450 @INIT
460 T="LED":L=LEN(T)
470 FOR C=0 TO L-1
480 D=PEEK(T+C)
490 POKE S+C,D
500 NEXT
510 POKE S+L,0
520 SAVE 0
530 RTN

IchigoJam R互換機なので、多くのUSBキーボードが使えるのが利点です。
あとはICが手に入れば量産できるのですが…