3分タイマー 電卓文字風版


3分タイマー を大きな文字で表示させようとしたところ

それなら電卓の LED 文字のような表示にすると

プログラム的にも良いように思って作ってみました。

これでより実用的になったかと思います。

 

実際電卓文字を作ってみたところ、

最近のバージョンでは LC と ? CHR$() で生成するのが

無難で一番速い事が分かり、その方法にしています。

LET は多くのファームウェアで動作するように

10進数表記にしてあります。これを2進数に変換すると

文字データの仕組みが理解しやすいでしょう。

おまけで右下が点滅するようにしてみました。

 

あとは 3分タイマー と同じ仕組みで、

N の値で 3 分を変更、Z で誤差調整ができます。

終了時は LED が光りますが、LED 端子に何かつないで

動作する事を考えてあります。

 

古いバージョンの IchigoJam BASIC であるほど

文字の表示が変化するタイミングにずれが生じます。

そのため、1.0.0 以降の動作を推奨としています。

処理速度のはやい IchigoJam BASIC RPi は
ほぼずれなく動作します。



IchigoJam BASIC 0.9.4〜

10 '3プンタイマー デンタクモジ
20 CLS:CLT:N=3:Z=60:LED 0
30 LET[10],119,36,93,109,46
40 LET[15],107,123,37,127,111
50 LC 12,10:? CHR$(1);
60 LC 12,12:? CHR$(1);
70 T=N*60*Z-TICK()
80 U=TICK()%60/30
90 IF T<0 T=0
100 S=T/Z:M=S/60:S=S%60
110 X=20:Y=8:A=S%10:GOSUB 170
120 X=14:Y=8:A=S/10:GOSUB 170
130 X=6 :Y=8:A=M   :GOSUB 170
140 LC 26,14:? CHR$(U);
150 IF T>0 GOTO 70
160 LC 0,16:LED 1:END
170 B=0
180 [B]=[10+A]&(1<<B)<>0
190 B=B+1:IF B<7 GOTO 180
200 LC X,Y
210 ? CHR$(0,[0],[0],[0]);
220 LC X,Y+1
230 ? CHR$([1],0,0,0,[2]);
240 LC X,Y+2
250 ? CHR$([1],0,0,0,[2]);
260 LC X,Y+3
270 ? CHR$(0,[3],[3],[3]);
280 LC X,Y+4
290 ? CHR$([4],0,0,0,[5]);
300 LC X,Y+5
310 ? CHR$([4],0,0,0,[5]);
320 LC X,Y+6
330 ? CHR$(0,[6],[6],[6]);
340 RETURN

MixJuice ダウンロード ?"MJ GET kidspod.club/mj/583

MicJack ダウンロード ?"MJ GKP 583

IchigoJam BASIC 0.9.9 以降の画面サイズに合わせているため、

IchigoJam BASIC 0.9.4〜0.9.8 では若干左上に表示されます。


IchigoJam BASIC 0.8.6〜0.9.7

10 CLS:LET N,3:LET Z,60:LED 0
20 LET[10],119:LET[11],36
30 LET[12],93:LET[13],109
40 LET[14],46:LET[15],107
50 LET[16],123:LET[17],37
60 LET[18],127:LET[19],111
70 LOCATE 14,13:? CHR$(1);
80 LOCATE 14,15:? CHR$(1);
90 LET T,N*60*Z-TICK()
100 LET U,TICK()%60/30
110 IF T<0 LET T,0
120 LET S,T/Z
130 LET M,S/60:LET S,S%60
140 LET X,22:LET Y,11:LET A,S%10
150 GOSUB 230
160 LET X,16:LET Y,11:LET A,S/10
170 GOSUB 230
180 LET X,8:LET Y,11:LET A,M
190 GOSUB 230
200 LOCATE 28,17:? CHR$(U);
210 IF T>0 GOTO 90
220 LOCATE 0,19:LED 1:END
230 LET B,0
240 LET [B],[10+A]&(1<<B)<>0
250 LET B,B+1:IF B<7 GOTO 240
260 LOCATE X,Y
270 ? " ";CHR$([0]);
280 ? CHR$([0]);CHR$([0]);
290 LOCATE X,Y+1:? CHR$([1]);
300 ? "   ";CHR$([2]);
310 LOCATE X,Y+2:? CHR$([1]);
320 ? "   ";CHR$([2]);
330 LOCATE X,Y+3
340 ? " ";CHR$([3]);
350 ? CHR$([3]);CHR$([3]);
360 LOCATE X,Y+4:? CHR$([4]);
370 ? "   ";CHR$([5]);
380 LOCATE X,Y+5:? CHR$([4]);
390 ? "   ";CHR$([5]);
400 LOCATE X,Y+6
410 ? " ";CHR$([6]);
420 ? CHR$([6]);CHR$([6]);
430 RETURN

他のバージョン