IchigoDotsWatchを作りました。

IchigojamにIchigoDotsとリアルタイムクロックモジュールを組み合わせた時計を作りました。

動画は、13時59分~14時0分と、14時10分~14時11分です。

スクロールや画面切り替えは無しで時計を作りたかったので、表示を工夫しました。
周りの点の、点滅している場所で時刻がわかります。アナログ時計の文字盤を歪めたような配置です。数字は分です。(使用に慣れがいります)

表示する数字と文字盤のパターンをすべてPCGで文字として定義し、ビット演算で合成して表示しています。

参考:
http://fukuno.jig.jp/app/IchigoJam/monodots-i.html (monodots-i PCG定義)
http://fukuno.jig.jp/1426 (同じRTCモジュールを使用しました)

http://d.hatena.ne.jp/shiro0922/ (IchigoDots関連)

書籍「みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作 」(ビット演算)

以下はプログラムです。2スロット使用しています。IchigoDots POKEの方を0番、IchigoDotsWatchを1番にセーブすることを想定しています。

≪解説≫

IchigoDots POKEから

20 初期化とIchigoDotsにダミーデータ。これがないと30でのROTATEが効かなかった。
あとはひたすらPOKE。COPYも使って節約しようとしています。

30 文字を作成して、それをIchigoDotsに表示させる方法をとったので、画面回転して、文字を表示させやすくしました。(単純にIchigoDots自体を回転させても可)

220~240は、確認用に画面表示しています。開発中の名残です。20のVIDEO 0と250のLRUNを消すと、定義した文字の一覧が見れます。

f:id:maeno369:20161119002946j:plain

#708~#760時刻を表す点の点滅用マスク
#768~#7B0分の一の位
#7B8~#7E0分の十の位
#7E8時刻を表す点

IchigoDotsWatch

10~15配列に文字の入ったメモリを割り当てます。
[20]~[25]分の十の位を表す文字
[30]~[39]分の一の位を表す文字
[40]~[51]時刻を表す文字(点滅する位置)

先にサブルーチンから。
400~410リアルタイムクロックモジュールから時刻を取り出しています。これは福野さんのブログのプログラムのままなので、年月日や秒も取り出しています。(正直わかっていません)

430~500[4]が時刻、[5]が分です。変数Dに時刻(午後の場合、➖12しています)、Eに分の十の位、Fに分の一の位を入れて、それぞれ最初の配列に対応するように40,20,30を足してます。

600~620IchigoDotsに出力しています。

70~110文字を論理和で合成してIchigoDotsに表示させる文字を作成。
220~250先ほどの文字の、時刻部分が消えた文字を排他的論理和で作成して、0.5秒ごとに切り替えて点滅させます。