★IchigoJam Advent Calendar 2021にエントリーしています。
LEDマトリックスで文字列を表示するペンダントを作ってみました。
USBキーボードをつないで好きな文字列を設定して、自分だけのオリジナルペンダントに(^_^)
動画はこちら。
一応ペンダントということにしていますが、基板の四隅に穴を空けてあるので、ひもやキーホルダーなどを好きに付けてください。
基板は基本的にIchigoJam Rの互換機で、RISC-Vチップ・GD32VF103CBT6が載っています。
以前作った「LEDマトリックススキャン」と同じく、3to8ラインデコーダ74HC138(こちらはTSSOP版)でスキャンして、LEDマトリックスを光らせています。
キーボードをつなぐと、好きな文字列を設定して表示できます。
ただ最近の半導体不足で、RISC-VのICが全然手に入りません。
私は手持ちの在庫で何とか作りましたが、他の皆さんには今はあまりお勧めできません。
回路図
基板データ
- Fusion PCB用ガーバーデータ(ZIP)(60×52mm)
*この基板データは、CC BYライセンスとします。どうぞご利用ください。
(C) 2021 Shiro Saito (https://www.ichigojaman.jp)
材料
- RISC-V IC GD32VF103CBT6
- カーボン抵抗(炭素皮膜抵抗) 1/6W10kΩ (100本入) R9
- クリスタル(水晶発振子) 8MHz
- 絶縁ラジアルリード型積層セラミックコンデンサー 15pF50V±5%2.54mm (10個入) ×2本 C3、C4
- シングルピンソケット (低メス) 1×20 (20P) ×10P
- ※ここまで付けると、GD32VF103CBT6のファームウェアを書き込み可能
- 3to8ラインデコーダー 74LCX138FT (5個入)
- 低損失表面実装型三端子レギュレーター 3.3V800mA NJM2845DL1-33
- カーボン抵抗(炭素皮膜抵抗) 1/6W330Ω (100本入) ×8本 R1~R8
- 積層セラミックコンデンサー 10μF25V X7S 5mm C1
- 絶縁ラジアルリード型積層セラミックコンデンサー 0.1μF50V2.54mm (10個入) ×2本 C2、C5
- スライドスイッチ 1回路2接点 基板用 横向き
- 基板取付用USBコネクタ(Aタイプ メス)
- タクトスイッチ(黒色)
- 圧電スピーカー(圧電サウンダ)(13mm)PKM13EPYH4000-A0
- 分割ロングピンソケット 1×42 (42P) 8P×2本
- 電池ボックス 単4×3本 リード線
- 緑色ドットマトリクスLED 8×8ドット OSL641501-AG
- マトリックスLEDの色はお好みですが、緑色が高輝度で見やすいです。赤色は安いですが暗いです。
プログラム
以下のプログラムをファイル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が手に入れば量産できるのですが…