IchigoJamでRTCモジュールを使った時刻表示 その2
前回のプログラムをベースにして、
キャラクタ文字を使って大きく表示するように改造しました。

動いている様子
ちょっと表示が遅い感がありますが、秒刻みにて表示出来ています。
更新頻度の少ない時・分も毎回表示しているので、これを変更時のみにすれば
もう少し早く表示出来るかもしれません。
プログラムソース(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」カテゴリの記事
- Ichigojam Rが届きました(2021.02.05)
- β版 IchigoJam Rを予約注文しました(2021.01.23)
- IchigoJamのファームウェア 1.4.1が正式に公開されました(2019.12.10)
- 「ichigoツール」をGithubにて公開しました(2019.11.09)
- ichigojamのファームウェアを1.4b13にアップデートしました(2019.11.06)
« IchigoJamでRTCモジュールを使った時刻表示 | トップページ | IchigoJamでRTCモジュールを使った時刻表示 その3 »

コメント