フォト
2017年10月
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 31        
無料ブログはココログ

« IchigoJamでRTCモジュールを使った時刻表示 | トップページ | IchigoJamでRTCモジュールを使った時刻表示 その3 »

2016年9月 7日 (水)

IchigoJamでRTCモジュールを使った時刻表示 その2

前回のプログラムをベースにして、
キャラクタ文字を使って大きく表示するように改造しました。

  Dscn5708

動いている様子



ちょっと表示が遅い感がありますが、秒刻みにて表示出来ています。

更新頻度の少ない時・分も毎回表示しているので、これを変更時のみにすれば
もう少し早く表示出来るかもしれません。


プログラムソース(IchigoJam BASIC 1.2.1)
  GitHub:Tamakichi/IchigoJam RTC DS3231利用サンプルソースその2

10 'RTC DS3231
20 'T="16090407085800":GSB @SET
30 CLS:M=#700:A=#68:POKE M,0:L=0:S=M+16
40 LET [0],31599,4681,29671,29647,23497,31183,31215,29257,31727,31695,0,1040,2184
45 LET [20],11,11,10:X=2:Y=5
50 FOR I=0 TO 12:FOR J=14 TO 0 STEP -1
70 IF ([I]>>J)&1 D=1 ELSE D=32
80 POKE S+L,D:L=L+1
90 NEXT:NEXT
130 @LP:R=I2CR(A,M,1,M+1,7):GSB@PDG:GOTO @LP
170 @SET:N=M+7
190 FOR I=T TO T+13 STEP 2
200 POKE N,(PEEK(I)-48)<<4+PEEK(I+1)-48:N=N-1
210 NEXT
220 R=I2CW(A,M,1,M+1,7)
230 RTN
240 @PDG:FOR I=0 TO 4:LC X,Y+I:K=20
270 FOR J=2TO0STEP -1:D=PEEK(M+1+J):E=S+I*3
290 ?STR$(E+(D>>4)*15,3);" ";STR$(E+(D&15)*15,3);STR$(E+[K]*15,3);
300 K=K+1:NEXT:NEXT
330 RTN


プログラムサイズは658バイトです。まだ少々の機能追加の余地がありますね。
時報くらいは追加出来るかもしれません。

プログラムの説明

RTC(DS3231)周りの処理は前回と同じなので省略します。

40行で表示用の拡大文字(13文字分 0~9、空白、:、/)を定義しています。
1文字は3x5ドットとして15ビット分を配列変数に格納してます。
例えば、315999は2進数だと 111101101101111 になります。
これを3ビットづつ切り出して縦に並べると
   111
   101
   101
   101
   111


パターンが'0'に見えますね。
画面表示では1を"■"、0を"  "(空白)に置き換えて表示しています。

ただし、この置き換え処理を表示の都度毎回行うには無駄なので、
あらかじめ、表示用の文字に置き変えておきます(=フォントテーブルの作成)。
その処理を50~90行で行っています。
具体的には、変数Sが指し示すアドレスに変換したパターンを格納しています。

170~210行は時刻設定時に利用するサブルーチンです。
(前回と同じなので説明省略)

240~330行が表示処理を行っています。
フォントテーブルを利用してキャラクタを表示しています。
(ここの説明はちょっとしんどいので、後日追記します)


2

« IchigoJamでRTCモジュールを使った時刻表示 | トップページ | IchigoJamでRTCモジュールを使った時刻表示 その3 »

IchigoJam」カテゴリの記事

コメント

コメントを書く

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

トラックバック

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

この記事へのトラックバック一覧です: IchigoJamでRTCモジュールを使った時刻表示 その2:

« IchigoJamでRTCモジュールを使った時刻表示 | トップページ | IchigoJamでRTCモジュールを使った時刻表示 その3 »