栃木工業高校製のIchigoJam互換機「SkyBerryJAM」を組み込んだバーコードカムロボを作りました。
通常はIchigoJamとMaplesyrupの2枚を組み込むのですが、モータードライバ搭載のSkyBerryJAMを使うと基板が1枚で済むので、安価で簡単に作れます。
モーターと距離センサーの配線はこちらのとおり。
命令表
材料

タミヤ 楽しい工作シリーズ No.227 カムプログラムロボット 工作セット 70227
- 出版社/メーカー: タミヤ(TAMIYA)
- 発売日: 2017/08/12
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る

タミヤ 楽しい工作シリーズ No.151 単3電池ボックス 2本用 スイッチ付 (70151)
- 出版社/メーカー: タミヤ(TAMIYA)
- 発売日: 2009/06/23
- メディア: おもちゃ&ホビー
- 購入: 7人 クリック: 11回
- この商品を含むブログ (3件) を見る
カムロボの改造方法はカムロボ部のページを参照。
eleshop.jp

ビジコム バーコードリーダー 二アレンジCCD USB 黒 液晶読取対応 BC-BR900L-B
- 出版社/メーカー: BUSICOM(ビジコム)
- 発売日: 2012/06/22
- メディア: オフィス用品
- 購入: 3人 クリック: 32回
- この商品を含むブログ (1件) を見る
akizukidenshi.com
プログラム
プログラムの方も、各種ロボットに対応した「バーコードOS」として作りかえました。
バーコードでカードを読むと、「ピッ、ピッ…」とプログラムの行数だけブザーが鳴ります。(画面が無くても使えます)
「やってみる」(RUN)カードでプログラムを実行、「プログラムをぜんぶけす」(NEW)カードでプログラムを消去します。
メインプログラム(スロット0)
1 UART1:CLS:?"*Barcode OS*" 2 CLV:F=FILE():CLK 3 Z=0:L=0 4 OUT0:?"OK":LED1:BEEP30,30:WAIT30:LED0 5 ?CHR$(1);:R=1 6 B=INKEY():IF!BCONT 7 GSB30 8 ?CHR$(8);:IF!CGOTO16 9 IFTGSB15 ELSEGSB13 10 FORI=1TOZ:LED1:BEEP10,3:WAIT10:LED0:WAIT10:NEXT 11 GOTO24 12 GOTO5 13 Z=Z+1:[Z]=C*16+O:IFC=8L=L+1:[70+L]=Z 14 ?">";Z*10;" ";:RTN 15 [Z]=[Z]|((C*16+O)<<8):T=0:RTN 16 IFO=1?"RUN":R=0:GOTO21 17 IFO=2?"LIST":R=2:GOTO21 18 IFO=3?"NEW":GOTO3 19 IFO=4CLS:GOTO4 20 GOTO5 21 LED1:BEEP30,30:WAIT30:LED0:A=0 22 A=A+1:IFA>ZGOTO4 23 C=[A]&#F0/16:O=[A]&15:?A*10;" "; 24 IFC=15&&O=15LRUNF+1,150 25 IFC&12=4O=C&3*16+O:C=4 26 LRUNF+1,C*10 27 IFT&&(R!=1):C=([A]&#F000)>>12:O=([A]&#F00)>>8:T=0:GOTO24 28 B=INKEY()&#FF:IFBGSB30:IFC=15&&O=15?"ESC":GOTO4 29 GOTO22 30 I=89 31 I=I+1:[I]=B-48 32 B=INKEY():IF!BCONT 33 IFB!=10GOTO31 34 D=0:FORJ=90TOI:D=D*10+[J]:NEXT 35 C=D/16:O=D%16:WAIT30:CLK:RTN
コマンドサブルーチン(スロット1):通常版(IchigoJam+Maplesyrup)
1 '*Barcode OS-1 10 @LED 11 ?"LED ";O:IFR=1LRUNF,12 12 IFR=2LRUNF,27 13 LEDO:LRUNF,27 20 @WAIT 21 IFO<8O=O*60ELSEO=(O&7)*10 22 ?"WAIT ";O:IFR=1LRUNF,12 23 IFR=2LRUNF,27 24 WAITO:LRUNF,27 30 @BEEP 31 ?"BEEP":IFR=1LRUNF,12 32 IFR=2LRUNF,27 33 BEEP:LRUNF,27 40 @OUT 41 ?"OUT ";O:IFR=1LRUNF,12 42 IFR=2LRUNF,27 43 OUTO:LRUNF,27 80 @LABEL 81 ?"@";O:IFR=1LRUNF,12 82 LRUNF,27 90 @GOTOL 91 ?"GOTO @";O:IFR=1LRUNF,12 92 IFR=2LRUNF,27 93 A=[70+O]-1:LRUNF,27 100 @IFBTN 101 ?"IF BTN()=";O;" THEN ";:T=1:IFR=1LRUNF,12 102 IFR=2LRUNF,27 103 T=(BTN()=O):IF!T? 104 LRUNF,27 110 @IFANA2 111 ?"IF ANA(2)"; 112 IF O THEN ?">500"; ELSE ?"<=500"; 113 ?" THEN ";:T=1:IFR=1LRUNF,12 114 IFR=2LRUNF,27 115 D=(ANA(2)>500):T=(D=O):IF!T? 116 LRUNF,27 120 @FOR 121 ?"FOR I=1 TO ";O:IFR=1LRUNF,12 122 IFR=2LRUNF,27 123 I=1:J=O:S=A:LRUNF,27 130 @NEXT 131 ?"NEXT":IFR=1LRUNF,12 132 IFR=2LRUNF,27 133 I=I+1:IFI<=JA=S 134 LRUNF,27 150 @END 151 ?"END":IFR=1LRUNF,12 152 IFR=2LRUNF,27 153 A=Z:LRUNF,27
コマンドサブルーチン(スロット1):SkyBerry版
1 '*Barcode OS-1 SkyBerry 10 @LED 11 ?"LED ";O:IFR=1LRUNF,12 12 IFR=2LRUNF,27 13 LEDO:LRUNF,27 20 @WAIT 21 IFO<8O=O*60ELSEO=(O&7)*10 22 ?"WAIT ";O:IFR=1LRUNF,12 23 IFR=2LRUNF,27 24 WAITO:LRUNF,27 30 @BEEP 31 ?"BEEP":IFR=1LRUNF,12 32 IFR=2LRUNF,27 33 BEEP:LRUNF,27 40 @OUT 41 ?"OUT ";O:IFR=1LRUNF,12 42 IFR=2LRUNF,27 43 OUTO&3+(O&48)>>2:LRUNF,27 80 @LABEL 81 ?"@";O:IFR=1LRUNF,12 82 LRUNF,27 90 @GOTOL 91 ?"GOTO @";O:IFR=1LRUNF,12 92 IFR=2LRUNF,27 93 A=[70+O]-1:LRUNF,27 100 @IFBTN 101 ?"IF BTN()=";O;" THEN ";:T=1:IFR=1LRUNF,12 102 IFR=2LRUNF,27 103 T=(BTN()=O):IF!T? 104 LRUNF,27 110 @IFANA2 111 ?"IF ANA(2)"; 112 IF O THEN ?">500"; ELSE ?"<=500"; 113 ?" THEN ";:T=1:IFR=1LRUNF,12 114 IFR=2LRUNF,27 115 D=(ANA(2)>500):T=(D=O):IF!T? 116 LRUNF,27 120 @FOR 121 ?"FOR I=1 TO ";O:IFR=1LRUNF,12 122 IFR=2LRUNF,27 123 I=1:J=O:S=A:LRUNF,27 130 @NEXT 131 ?"NEXT":IFR=1LRUNF,12 132 IFR=2LRUNF,27 133 I=I+1:IFI<=JA=S 134 LRUNF,27 150 @END 151 ?"END":IFR=1LRUNF,12 152 IFR=2LRUNF,27 153 A=Z:LRUNF,27
43行でOUTポートを変換しているだけで、その他は通常版と同じです。
IchigoJam+Maplesyrupでは、左モーターをOUT1とOUT2、右モーターをOUT5とOUT6で制御するのですが、SkyBerryJAMでは右モーターがOUT3とOUT4につながります。そのままだとバーコードカードを変更しないといけないので、プログラム内でポートを変換して合わせています。