フォト
2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« ReadyNAS上に電子書籍閲覧サーバーを試しに作ってみました | トップページ | IchigoJamとArduinoとの連携(1) »

2015年2月 7日 (土)

IchigoJamでのBASICプログラミング その1

IchigoJamでのBASICプログラミングは、コードを記述するメモリー領域が
1Kバイトしかないため、ちょっとしたプログラムを書くとすぐにメモリーオーバーとなります。
色々と工夫が必要です。



まず、実用的なプログラムとして1/60秒カウンタ TICK()関数を使って
時計を作成してみました。

Dscn3588

10 CLS
20 H=18:M=48:S=0
30 ?"H=";:INPUT H
40 ?"M=";:INPUT M
50 ?"S=";:INPUT S
60 CLS:CLT:GOTO 100
80 T=TICK():IF T%60=0:GOTO 100
90 GOTO 80
100 S=S+1:IF S=60 S=0:M=M+1:IF M=60 THEN M=0:H=H+1:IF H=24 H=0
110 LC 0,0:? "        "
120 IF H<10 ?"0";
130 ?H;:?":";
140 IF M<10 ?"0";
150 ?M;:?":";
160 IF S<10 ?"0";
170 ?S
180 GOTO 80

IchigoJamは時計機能は無いのですが、TICK()関数でも
実測で24時間で5分程度のズレ(0.34%のずれ)の時計が出来ました。
この程度のズレなら、ラーメンタイマーやプレゼンテーションタイマーに使えます。
(効果音は当然チャルメラ♪)

CPU NXP LPC1114のデーターシートを見ると内部クロック(CR発振回路)のずれは1%
と明記しています。水晶振動子で外部から正確なクロックを与えたらもっと精度が
上がるかもしれません。

「取りあえず使えそうだ、実用には時刻を大きく表示したい!」ということで、
キャラクタ文字で数字を作成しようと試みると、

Dscn3577

0〜5までの文字で"Out of memory"が発生しました。
これは想像以上に厳しい。

そこで、1文字3x5のパターンをビットデータに置き換えて配列に格納することにしました。
1文字3x5=15ビット(2バイト)なので1文字は配列の1変数に格納できます。

取りあえず、文字の表示の確認。実行結果は下記の通り。見た目はいい感じです。

Dscn3602

10 CLS
30 [0]=31599:[1]=4681:[2]=29671:[3]=29647:[4]=23497
40 [5]=31183:[6]=31215:[7]=29257:[8]=31727:[9]=31695
50 [10]=1040:[11]=0:[20]=32:[21]=1
100 N=0:P=0:Q=0
210 X=P:Y=Q:GOSUB 500
220 N=N+1:IF N=10 N=0
230 P=P+4:IF P>35 P=0:Q=Q+6:IF Q >20 ?:END
240 GOTO 210
500 B=12
510 D=[N]>>B&7:GOSUB 600:IF B>=0 GOTO 510
520 RETURN
600 LC X,Y:?CHR$([20+(D&4>0)]);CHR$([20+(D&2>0)]);CHR$([20+(D&1>0)]);
610 Y=Y+1:B=B-3
620 RETURN

プログラムは、こんなにも短く出来きました。
(ソース見ても何やってるか分からない状態でが..)

しかし、処理時間がかかり過ぎて実用的でないです。
実際の動作の様子の通りです。


これでは、秒刻みの時計はちょっと無理そうです。
う〜ん、遅い。昔の8ビットパソコンに比べても2桁遅い気がします。
まあ、1チップでNTSCのビデオ信号生成までやってるので、これは仕方がないですね。

分刻みの時計ならいけるかも。

制約が大きい分、かなりの工夫が必要となります。
テクニックとアイデアを駆使せねばなりません。

つぎは、「ブレゼンハムのアルゴリズム」を使って整数演算だけで円を書いてみます。

« ReadyNAS上に電子書籍閲覧サーバーを試しに作ってみました | トップページ | IchigoJamとArduinoとの連携(1) »

IchigoJam」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/61100426

この記事へのトラックバック一覧です: IchigoJamでのBASICプログラミング その1:

« ReadyNAS上に電子書籍閲覧サーバーを試しに作ってみました | トップページ | IchigoJamとArduinoとの連携(1) »