SHIROのIchigoJam日記

IchigoJamの電子工作とプログラミングをメインに

バーコードJam USB版

FacebookIchigoJam-FANグループにも参加している渡邊さんが、「USB-PS/2逆変換アダプタ」を作って、スイッチサイエンスで発売しました。

USBキーボードの信号をPS/2へ変換するアダプタで、これを介すると普通のUSBキーボードをIchigoJamにつないで使うことができます。

以前「バーコードJam」を作る際に、USBタイプのバーコードリーダーをIchigoJamにつなごうとして失敗していました。
このアダプタでつなげば行けるんじゃ?と思って、IchigoJamにUSBバーコードリーダーをつないで試してみました。
その結果、読み取り速度を調整すれば、バッチリ読めました!

使用したバーコードリーダーは、ビジコム社の「BC-BR900L」です。設定マニュアルをサイトからダウンロードして印刷し、リーダーでバーコードを読み取ると動作を設定できます。設定値は以下のとおり。

  • インターフェース=USB
  • キーボード言語=Japan
  • キャラクター間送信ディレイ=10h
    • ※デフォルトの00h(ディレイ無し)だと、IchigoJamが読みこぼしてしまいます。

バーコードから読み込んだ文字+EnterキーがそのままIchigoJamへ入力されるので、とてもわかりやすいです。
これで電子工作無しで簡単に「バーコードJam」が作れます! 作ってみたのがこちら。

USBバーコードリーダーと変換アダプタがあればすぐ試せるので、子ども向けのカードプログラミングにいかがでしょうか。

USBバーコードリーダーに対応したプログラムは以下のとおり。読み込み部分が簡単になりました。

プログラム0:メインプログラム

1 SWITCH1:CLS:?"*Barcode Jam*"
2 CLV:F=FILE():WAIT60:CLK
3 OUT0:Z=0:L=0
4 ?"OK"
5 ?CHR$(1);:R=1
6 B=INKEY():IF!BCONT
7 GSB28
8 ?CHR$(8);:IF!CGOTO15
9 IFTGSB14 ELSEGSB12
10 GOTO23
11 GOTO5
12 Z=Z+1:[Z]=C*16+O:IFC=8L=L+1:[70+L]=Z
13 ?">";Z*10;" ";:RTN
14 [Z]=[Z]|((C*16+O)<<8):T=0:RTN
15 BEEP30,30:IFO=1?"RUN":R=0:GOTO20
16 IFO=2?"LIST":R=2:GOTO20
17 IFO=3?"NEW":GOTO3
18 IFO=4CLS:GOTO4
19 GOTO5
20 A=0
21 A=A+1:IFA>ZGOTO4
22 C=[A]&#F0/16:O=[A]&15:?A*10;" ";
23 IFC=15&&O=15LRUNF+1,150
24 LRUNF+1,C*10
25 IFT&&(R!=1):C=([A]&#F000)>>12:O=([A]&#F00)>>8:T=0:GOTO23
26 B=INKEY()&#FF:IFBGSB28:IFC=15&&O=15BEEP30,30:?"ESC":GOTO4
27 GOTO21
28 I=89
29 I=I+1:[I]=B-48
30 B=INKEY():IF!BCONT
31 IFB!=10GOTO29
32 D=0:FORJ=90TOI:D=D*10+[J]:NEXT
33 C=D/16:O=D%16:BEEP:WAIT30:CLK:RTN

※1行目の「SWITCH1」を削除すれば、普通の液晶モニタで動きます。

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

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

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

関連ファイル

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

命令表