SHIROのIchigoJam日記

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

旗上げゲーム

「赤上げて」「白上げて」で有名な旗上げゲームを、IchigoJamのプログラムで作ってみました。
動画はこちら。

www.youtube.com


IchigoJamは白黒しか表示できないので、旗は左側が「白」、右側が「黒」です。(ちょっとわかりづらいかも…)
指示されたら、制限時間(2秒)以内に、左右の矢印キー(←→)を押して、旗を上げ下げしてください。間違えるとゲームオーバーです。
単純なゲームですが、「上げない」「下げない」もあってなかなか難しいです。

サーボモーターでリアルに旗を上げ下げしたり、加速度センサー付きの「旗コントローラー」を持ってプレイしたり、音声ICでしゃべらせたり、工夫次第でいろいろ面白くなりそうです。

プログラム

10 '*HataAge
20 CLV:VIDEO 3:CLS:W=120
30 POKE #780,#FF,#FF,#FF,#FF,#FF,#FF,#FF,#FF
40 POKE #788,#FF,#81,#81,#81,#81,#81,#81,#FF
50 LET [0],"シロ","クロ"
60 LET [10],"サゲテ","アゲナイデ","アゲテ","サゲナイデ"
70 LC 7,9:?CHR$(79,31,28,1,31,28,65);
80 GSB @LD:GSB @RD:WAIT W
90 @LOOP
100 LC 0,0:?S
110 LC 3,5
120 H=RND(2):?STR$([H]);" ";
130 I=RND(2):?STR$([10+I*2+RND(2)]);"   "
140 IF H B=I ELSE A=I
150 CLT:GSB @HMOV
160 IF A=L && B=R BEEP:S=S+1:GOTO @LOOP
170 BEEP 30,30:LC 0,1:END
180 @HMOV
190 K=INKEY()
200 IF K=28 L=!L
210 IF K=29 R=!R
220 IF L GSB @LU ELSE GSB @LD
230 IF R GSB @RU ELSE GSB @RD
240 IF TICK()<W GOTO @HMOV
250 RTN
260 @LD
270 LC 5,8:?CHR$(0,31,0,31,28,28,240,25);:RTN
280 @LU
290 LC 5,8:?CHR$(240,31,26,31,28,28,0,0);:RTN
300 @RD
310 LC 9,8:?CHR$(0,31,28,28,0,31,28,26,241);:RTN
320 @RU
330 LC 9,8:?CHR$(241,31,28,28,25,31,28,0,0);:RTN
  • 20行の「W=120」が制限時間です(現在は2秒)。この値を変えるとゲームの難易度が変わります。
  • 30~40行で、PCGで白旗(文字コード240)・黒旗(文字コード241)を作っています。ここを変えると旗の柄を変更できます。50行の「シロ」「クロ」の文字と共に変えるといいでしょう。

SanadaDake-RV

IchigoJam R互換機のDakeバージョン「SanadaDake-RV」を作りました。

f:id:shiro0922:20210416164955j:plain

LED点灯


LEDセンサー基板を差して点灯確認。
まだRのファームウェアでINポート→OUTポートの切り替えが実装されていないので、8個目のLEDは光らせることができません。
8個のLEDでバーサライターをやりたいので、INポート→OUTポートの切り替えを早く実装して欲しいです。

外付けUSBキーボード

特長として、外付けUSBキーボード端子を付けました。
切り替えスイッチで、IchigoDyhook側キーボード(IN側)/外付けキーボード(OUT側)を切り替えます。

プログラミング教室などで、キーボードデバイスを外付けしてサポートすることを想定しています。
ただし、Dakeの仕様で電源が3.3Vしか供給できないので、3.3Vで動作するキーボードが必要です。
f:id:shiro0922:20210416172242j:plain

使えなかったキーボード

無線接続(USBドングル)のキーボードの方が、消費電力が少なくて案外行けるかもしれません。

バーコードリーダーを接続

IchigoJam Rでも活用した、Symcodeのバーコードリーダーをつないでみました。

メーカー公式ページはこちら。設定マニュアルもダウンロードできます。

f:id:shiro0922:20210416155635j:plain
2.4GHzの無線USBドングルを差すのですが、3.3V電源でも動作して、「かわくだり」のQRコードが無事に読めました(^_^)v
f:id:shiro0922:20210416155430j:plain
プログラミング教室などで、教材プログラムを配布したり、間違ってプログラムを消してしまった子を救済することができます。

なお、最初にバーコードリーダーの設定が必要です。
設定マニュアルのバーコードを読んで設定します。
(一度設定すれば、次回からは設定不要)
f:id:shiro0922:20210416155510j:plain

  • 「Language Settings」を「English」にする
  • 「Capital and Lowcase Switch」で「Capital and Lowcase Switch」を一度読んで、アルファベット読み取りを大文字にする(BASICプログラムの場合)。
    • 「Transfer to Capital Set」を読めばいいように思うのですが、なぜかエラーになって設定できませんでした。
  • SanadaDake-RVの方は「KBD 0」で英語キーボードモードにします。(IchigoDyhookは英語キーボードなので)

基板データ

f:id:shiro0922:20210416163531p:plain
f:id:shiro0922:20210416163515p:plain

*同じ基板を3枚配置しています。
*この基板データは、CC BYライセンスとします。どうぞご利用ください。

(C) 2021 Shiro Saito (https://www.ichigojaman.jp)

材料

かわくだりのQRコード

10 CLS:CLT:X=16
20 X=X-BTN(28)+BTN(29)
30 IF SCR(X,5) ?TICK()/60:END
40 LC X,5:?"O"
50 LC RND(32),23:?"*"
60 WAIT 3
70 GOTO 20

SanadaJam-RV

IchigoJam Rの互換機「SanadaJam-RV」を作りました。
以前作った「SanadaJam」と同様に、EEPROMやセンサー接続端子などを追加搭載しています。
f:id:shiro0922:20210405154127j:plain

f:id:shiro0922:20210405154257j:plain

ただ、RISC-VのIC・GD32VF103CBT6が、もう単品では入手困難になっているようです。私は自分とクラブ用に何とかICを確保しましたが、公式のIchigoJam Rも売り切れ状態です。今後どうなるか…?

回路図

f:id:shiro0922:20210405181128p:plain
実際に組み立ててわかりましたが、USBシリアルをつないでファームウェア書き込み&BASICの動作確認をするには、最低限で以下のパーツのはんだ付けが必要です。

  • メインIC・GD32VF103CBT6
  • ISPのプルダウン抵抗R5(10kΩ)
  • クリスタル(8MHz)
  • クリスタルのコンデンサC3・C4

LPC1114版ではクリスタルが無くても動作確認ができたのですが、GD32版ではクリスタル無しだとファームウェア書き込みはできますが起動しません。
逆に言えば、将来IchigoJam Rのはんだ付けキットが出たら、スイッチONしても起動しない(起動音も出ない)時のトラブルシューティングとして、クリスタル周辺のはんだ付けチェックが有効でしょう。

基板データ

f:id:shiro0922:20210405174704p:plain

f:id:shiro0922:20210405154135j:plain

*この基板データは、CC BYライセンスとします。どうぞご利用ください。

(C) 2021 Shiro Saito (https://www.ichigojaman.jp)