SHIROのIchigoJam日記

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

IchigoJam BASIC 1.4用プログラムまとめ

先日公開されたIchigoJam BASIC 1.4の新機能を使ったプログラムを、改めてまとめます。皆さんも試してみてください。

ロゴクロック


【IchigoJam】ロゴクロック
簡易グラフィック(XOR描画)と三角関数のテストとして作りました。

10 '*Logo Clock
20 CLV:CLS
30 LET [0],5,0,0,5,0,1,0,0,0,0,0,5,0,0,0,0,0
40 LET [17],5,7,1,7,5,5,7,5,7,5,0,5,7,5,#B,#B,#B
50 LET [34],1,3,1,1,1,1,3,5,3,1,3,1,3,3,2,2,2
60 LET [51],3,3,3,3,3,1,3,1,3,3,3,3,3,3,3,3,3
70 FOR Y=0 TO 51 STEP 17
80 LC 7,Y/17+10
90 FOR X=0 TO 16
100 ? CHR$(#80+[X+Y]);
110 NEXT
120 NEXT
130 FOR T=-90 TO 269
140 X=COS(T)/11
150 Y=SIN(T)/11
160 U=COS(T+1)/11
170 V=SIN(T+1)/11
180 DRAW 31+X,23+Y,31+U,23+V
190 NEXT
200 @LOOP
210 FOR T=-90 TO 264 STEP 6
220 X=COS(T)/11
230 Y=SIN(T)/11
240 DRAW 31,23,31+X,23+Y,2
250 WAIT 60
260 DRAW 31,23,31+X,23+Y,2
270 NEXT
280 GOTO @LOOP

花火アート

  • 起動すると画面下に発射台(ドット)が点滅します。カーソルキー左右で発射位置を決めてください。
  • スペースキーを押すと花火を発射します。適当な高さでもう一度スペースキーを押すと、花火が炸裂します。
  • 好きな大きさに花火が開いた所で、スペースキーを押して止めてください。発射台の移動へ戻ります。
  • 発射台移動中にXキーを押すと、画面をクリアします。

簡易グラフィックと三角関数を使って、花火の円を描いています。また、画面クリアのXキーはBTN(88)で読み取っています。
PCN北はりま謹製「HetaPad」を使うと、操作しやすくて楽しいです(^_^)

10 '*Hanabi Art 1.4
20 CLV:CLS
30 @START
40 IF BTN(32) CONT
50 Y=47
60 @XLOOP
70 DRAW X,Y,0
80 X=X-BTN(28)*(X>0)+BTN(29)*(X<63)
90 DRAW X,Y
100 IF BTN(88) CLS
110 IF !BTN(32) GOTO @XLOOP
120 IF BTN(32) CONT
130 @YLOOP
140 BEEP 50-Y,1
150 DRAW X,Y,0
160 Y=Y-1
170 DRAW X,Y,1
180 WAIT 1
190 IF !BTN(32) && Y>0 GOTO @YLOOP
200 IF BTN(32) CONT
210 BEEP 50,10
220 R=1
230 @FIRE
240 FOR T=0 TO 330 STEP 30
250 DRAW X+R*COS(T)/256,Y+R*SIN(T)/256
260 NEXT
270 R=R+1
280 IF !BTN(32) GOTO @FIRE
290 GOTO @START

バイオリズム

www.ichigojaman.jp
先日記事にしました。誕生日(年・月・日)と、現在の年・月を入力すると、今月のバイオリズムを描きます。
簡易グラフィック、三角関数を使っています。

IchigoJamスポーツ1.4

www.ichigojaman.jp
「大なわとびさっちゃん」「ゴルフ」「PK戦チームバトル」のスポーツゲーム3本をまとめたペーパーです。
簡易グラフィック、三角関数、BTN(88)でのXキーの読み取りを使っています。

スイングスピード計測


【IchigoJam】スイングスピード計測
TICK(1)での高速TICKを利用して、バットのスイングスピードを計測してみました。
センサーはとりあえず手持ちのフォトトランジスタを2個並べて、その上でバットを振りました。
f:id:shiro0922:20191209002117p:plain
赤外線センサーを使えばもっと正確になるでしょうし、ミニ四駆の速度計測などもできそうです。

10 '*Swing Speed
20 CLV:VIDEO 3:CLS:OUT 1,-1:OUT 2,-1:L=30
30 ?"Let's Swing"
40 IF ANA(5)>500 CONT
50 CLT
60 IF ANA(6)>500 CONT
70 C=TICK(1)
80 V=L*565/C
90 ?"C=";C;" V=";V;"km/h"

速度の計算方法ですが、高速TICKのカウントが48MHzの3056分周

f=48×10^6/3056(Hz)
で動いているので、1カウント当たりの秒数はその逆数
t=3056/(48×10^6)(秒)
になります。
速度=距離/時間なので、2つのセンサー間の距離をL(cm)、その間のカウント数をCとすると、
V=L/(C×t)(cm/s)
 =L÷100÷1000/(C×t÷60÷60)(km/h)
 =L×108000/(C×191)(km/h)
 ≒L×565/C(km/h)
となります。今回のセンサー間距離Lは30cmなので、これで2バイト整数の計算に収まります。
ちなみにプロ野球選手の平均スイングスピードは140km/hだそうです。30cmの距離を進むのにかかる時間は、
30÷100÷1000/(140÷60÷60)
 =27/3500
 ≒0.00771(秒)
高速TICKでのカウント数は、
27÷3500/{3056/(48×10^6)}
 =27×48×10^6/(3500×3056)
 ≒121(カウント)
ということで、プロ野球選手のスイングも何とか計測できそうです。