福野泰介の一日一創 - create every day

一度は作ってみたい、自分だけのオリジナル時計。
IchigoJamで作ってみましょう!
ひとまずテレビやミニモニターで動き、本体のボタンだけで時刻設定できる置き時計を目指します。

時間、分、秒をそれぞれ変数H,M,Sにいれるとします。
まずは適当な時間を設定して、表示してみましょう。

10 H=12:M=54:S=0 20 ?H;":";M;";":S RUN

セミコロンを使って、コロンで囲んだ表示ができますね。
秒針を進めてみます。

30 S=S+1 40 GOTO20 RUN

60秒を越えて、すごい勢いで時間が進みます!
60秒になったら、分を進め、60分になったら時間を進め、24時になったら0時に戻しましょう。

35 IF S=60 S=0:M=M+1:IF M=60 M=0:H=H+1:IF H=24 H=0

桁が揃っていないのが気になるので、DEC$を使って2桁に揃えます。

20 ?DEC$(H+100,2);":";DEC$(M+100,2);":";DEC$(S+100,2)

100を加えることで空きが0で埋まります。ついでにHもMも揃えておきました。
流れるような表示ではなく、その場で表示するよう、CLSとLCで整えます。

11 CLS 15 LC0,2 40 GOTO15

VIDEOコマンドを使って大きく表示!

12 VIDEO5

大きな画面のままだとプログラミングはしにくいので、F8キーまたはVIDEO1で戻します。
ちゃんと時計になるように、秒を1秒ごとに増やすように変更します。

25 IF TICK()<60 CONT ELSE CLT

時間をみて1秒(=60)になっていなければその行を繰り返し(CONT)、超えていれば時間をリセット。
時計の基本形は、できあがり!

時刻の調整をプログラムをいじらず行えるようにしたい?
まずはシンプルなキーボードで変更する方法

36 IF BTN() GSB100 100 INPUT"H:",H 110 INPUT"M:",M 102 S=0:CLS:RTN

本体のボタンを押すと(IchigoJam web なら画面をタッチかマウスでクリックすると)、時間と分を入力して設定できるプログラム(サブルーチン)を呼び出します(GOSUB/GSB ゴーサブ)
設定がおわったらRTN(RETURN リターン) コマンドでメインプログラムに戻ります。

キーボードも使わず、ボタンだけで時刻設定できたらかっこいいですね!

100 @SCLK:T=TICK()+30 110 IF TICK()<T IF BTN() CONT ELSE RTN 120 LED1:S=0:GSB@VCLK 130 IF BTN() CONT 140 IF BTN()=0 CONT ELSE CLT 150 IF TICK()<30 IF BTN() CONT ELSE H=H+1-24*(H=23):GSB@VCLK:GOTO140 160 LED0:WAIT10:LED1 170 IF BTN() CONT 180 IF BTN()=0 CONT ELSE CLT 190 IF TICK()<30 IF BTN() CONT ELSE M=M+1-60*(M=59):GSB@VCLK:GOTO180 200 LED0 210 IF BTN() CONT 220 CLT:RTN

ボタンを長押しすると時刻設定モードになりますが、Line error がでます。
時刻設定中にも時計表示をしたいので、@VCLK という名前でサブルーチンを作りましょう。

LIST 15,20 300 @VCLK:LC0,2 310 ?DEC$(H+100,2);":";DEC$(M+100,2);":";DEC$(S+100,2) 15 GSB@VCLK 20

15行と20行の行番号を編集して、@VCLKというラベルを付けたサブルーチンにします。
この表示部分をいろいろ変更して、オリジナル感を高めましょう。PanCakeを使ってカラーにする?LEDやサーボを使うのも楽しそう!

時刻設定部分のプログラム、じっくり読んだり、いろいろいじって解析してみるといいですよ!
0.5秒(30TICK)押して、時刻設定モード、短くおして時間を変更、0.5秒以上長押しすると分設定、更に0.5秒以上押して時計に戻しています。

今回作った時計はあまり正確ではないので、しばらくするとずれていくはずです。ズレを観測して楽しんでみるもよし、なんとか調整するもよし。 RTCという時計用の部品、電波時計モジュール、GPS、IchigoSodaを使うなど、いろんな手があります。(RTCを使った例、リレーとRTCとIchigoJamで改造、自動ネコゴハンマシン

どんな大きなシステムやプログラムも、小さなシステムやプログラムの集合に過ぎません。
良い夏休みを!

links
- 作例、二五進数LED置き時計

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像