SHIROのIchigoJam日記

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

バーコードJam

以前に、IchigoJamの命令が書かれたカトラリーカードに穴を開けてパンチカードにして、自作のカードリーダーで読み込んでプログラミングするシステム「パンチカードJam」を作りました。
自分で基板を工作しなくても、もっと簡単にカードでプログラミングできないか?と考えて、USBバーコードリーダーを使うシステム「バーコードJam」を作りました。
動作動画はこちら。


カトラリーカードに、バーコードを追加して印刷。バーコードはCode39フォーマットで、作成アプリで作りました。


バーコードリーダーは、ビジコンの「BC-BR900L」を使いました。
キーボードをエミュレートするリーダーなら、どれでも行けると思います。


バーコードリーダーを使うため、Windowsアプリ版IchigoJamIchigoJam ap」を使いました。
本当はIchigoJam RPi(Raspberry Pi版)を使いたかったのですが、バーコードリーダーが動作しません。

IchigoJam apを入手するには、Facebookグループ「IchigoJam-FAN」のファームウェア一覧
https://www.facebook.com/groups/ichigojam/400048676801558/
から、バージョン「1.2b47」をダウンロードしてください。
ダウンロードしたzipファイルを展開して、中にあるファイルをコピーして使います。


IchigoJam ap上で、バーコードJamのプログラムを動かします。
バーコードリーダーで1枚ずつカードのバーコードを読み取ってプログラミングして、「やってみる」(RUN)カードで実行します。

プログラムリスト

プログラム0:メインプログラム
※1/29 表示部分を修正

1 CLS:?"***Barcode Jam***"
2 CLV:CLK:F=FILE()
3 '@RESET
4 OUT0:Z=0:L=0
5 '@OK
6 ?"OK"
7 '@ICARD
8 R=1:GSB37
9 IF!CGOTO19
10 IFTGSB17 ELSEGSB14
11 BEEP:GOTO30
12 '@ICARDEND
13 GOTO7
14 '@ICARDN
15 Z=Z+1:[Z]=C*16+O:IFC=8L=L+1:[80+L]=Z
16 ?"read> ";Z*10;" ";:RTN
17 '@ICARDT
18 [Z]=[Z]|((C*16+O)<<8):T=0:RTN
19 '@COM
20 BEEP30,30:IFO=1?"RUN":R=0:GOTO25
21 IFO=2?"LIST":R=2:GOTO25
22 IFO=3?"NEW":GOTO3
23 IFO=4CLS:GOTO5
24 GOTO7
25 '@GO
26 A=0
27 '@GLOOP
28 A=A+1:IFA>ZGOTO5
29 C=[A]&#F0/16:O=[A]&15:?A*10;" ";
30 '@GDO
31 IFC=15&&O=15LRUNF+1,150
32 LRUNF+1,C*10
33 '@GLOOPEND
34 IFT&&(R!=1)C=([A]&#F000)>>12:O=([A]&#F00)>>8:T=0:GOTO30
35 IFINKEY()GSB37:IFC=15&&O=15BEEP30,30:?"ESC":GOTO5
36 GOTO27
37 '@RCARD
38 INPUT"",D:C=D/16:O=D%16:CLK:RTN

プログラム1:コマンドサブルーチン

1 '*Barcode Jam(1)
10 @LED
11 ?"LED ";O:IFR=1LRUNF,12
12 IFR=2LRUNF,33
13 LEDO:LRUNF,33
20 @WAIT
21 ?"WAIT ";O*60:IFR=1LRUNF,12
22 IFR=2LRUNF,33
23 WAITO*60:LRUNF,33
30 @BEEP
31 ?"BEEP":IFR=1LRUNF,12
32 IFR=2LRUNF,33
33 BEEP:LRUNF,33
80 @LABEL
81 ?"@";O:IFR=1LRUNF,12
82 LRUNF,33
90 @GOTOL
91 ?"GOTO @";O:IFR=1LRUNF,12
92 IFR=2LRUNF,33
93 A=[80+O]-1:LRUNF,33
100 @IFBTN
101 ?"IF BTN()=";O;" THEN ";:T=1:IFR=1LRUNF,12
102 IFR=2LRUNF,33
103 T=(BTN()=O):IF!T?
104 LRUNF,33
120 @FOR
121 ?"FOR I=1 TO ";O:IFR=1LRUNF,12
122 IFR=2LRUNF,33
123 I=1:J=O:S=A:LRUNF,33
130 @NEXT
131 ?"NEXT":IFR=1LRUNF,12
132 IFR=2LRUNF,33
133 I=I+1:IFI<=JA=S
134 LRUNF,33
150 @END
151 ?"END":IFR=1LRUNF,12
152 IFR=2LRUNF,33
153 A=Z:LRUNF,33

※プログラム0とプログラム1は、連続したスロットに置いてください。(スロット0と1でなくても構いません)

関連ファイル

カトラリーカード(バーコード付き)PDFファイル

命令表