以前に、IchigoJamの命令が書かれたカトラリーカードに穴を開けてパンチカードにして、自作のカードリーダーで読み込んでプログラミングするシステム「パンチカードJam」を作りました。
自分で基板を工作しなくても、もっと簡単にカードでプログラミングできないか?と考えて、USBバーコードリーダーを使うシステム「バーコードJam」を作りました。
動作動画はこちら。
カトラリーカードに、バーコードを追加して印刷。バーコードはCode39フォーマットで、作成アプリで作りました。
バーコードリーダーは、ビジコンの「BC-BR900L」を使いました。
キーボードをエミュレートするリーダーなら、どれでも行けると思います。
バーコードリーダーを使うため、Windowsアプリ版IchigoJam「IchigoJam 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でなくても構いません)