IchigoJamに載せるシールド基板「8LED Sensor Shield」を現在試作中です。
通信用のTX/RX/GND端子を搭載した基板ができたので、2台のIchigoJamで通信対戦するスカッシュゲームを作ってみました。
プレイ動画はこちら。
2台のIchigoJamを通信ケーブルで接続。
通信ケーブルは0.65mm径の単芯線を使います。
黒・白・緑の3本をより合わせました。
黒のケーブルで2台のGND同士を接続。
TX/RXは白と緑のケーブルでクロス接続します。
携帯できるように、裏側に単4×3本の電池ボックスを装着。
CN5端子(5V/GND)の裏側に配線します。
プログラムリスト
※ボールの加速を大きくして、早く勝負が着くように変更しました。
10 '*Squash 20 IF BTN()=1 THEN CONT 30 '@RESTART 40 CLV 50 UART 1,1 60 CLK 70 OUT 8,0 80 W=30 90 '@START 100 IF BTN()=1 THEN GOTO 140 110 K=INKEY() 120 IF K>0 AND K<255 THEN GOTO 180 130 GOTO 90 140 '@GAMELOOP 150 GOSUB 290 160 CLK 170 K=0 180 '@GAMERE 190 IF K=0 THEN K=INKEY():CONT 200 W=K-32 210 K=0 220 GOSUB 370 230 IF M=0 THEN GOTO 140 240 OUT 8,1 250 BEEP 30,60 260 WAIT 60 270 IF BTN()=0 THEN CONT 280 GOTO 30 290 '@SERVE 300 FOR X=6 TO 1 STEP -1 310 OUT X,1 320 WAIT W 330 OUT X,0 340 NEXT 350 PRINT CHR$(W+32) 360 RETURN 370 '@RECEIVE 380 B=0 390 FOR X=1 TO 6 400 OUT X,1 410 WAIT W 420 OUT X,0 430 NEXT 440 IF BTN()=1 THEN GOTO 500 450 OUT 7,1 460 CLT 470 '@WAITLOOP 480 IF BTN()=1 THEN GOTO 540 490 IF TICK()<W THEN GOTO 470 500 '@MISS 510 OUT 7,0 520 M=1 530 RETURN 540 '@STRIKE 550 BEEP 560 OUT 7,0 570 W=W-2 580 RETURN
やっていることは単純で、ボールの速度(WAITの数)を1文字(1バイトの文字コード)で互いに送受信しているだけです。
そのままの値(0〜30)だとコントロールコード領域になってしまい、IchigoJamがおかしな動作をするので、送信側は32を加えた値を出力して、受信側は32を引いて受け取っています。
新しい学習指導要領で、「2020年から小学校でプログラミング必修」が大きな話題になっていますが、実は2021年から施行される中学校でも、技術科の単元「計測と制御」でのプログラミングが拡充され、「ネットワークを利用したプログラミング」をやらなければならないことになっています。
先日視察した「教育ITソリューションExpo」でも、ロボット2台をケーブルでつないでネットワークプログラミングをする教材が展示されていました。
それを見て「IchigoJamでも簡単にネットワークプログラミングできないか?」と考えて、これを作ってみました。
本当はMixJuiceやIchigoSodaとサーバープログラムを使って、インターネットを介した通信をすると今時っぽいのですが、それはまた別の機会に。