スポンサーリンク
Scratch

micro:bitで目覚まし時計を作る

Scratch

スポンサーリンク

Bボタンを押したときの処理

Bボタンを押したときは分を増やす処理をしています。

大きく2つのブロックがあり、現在時間の分を入力するモードとアラーム時間の分を入力するモードです。

処理の仕様はAボタンを押したときと同じです。
分なので59まで入力されていた場合に0分に戻す処理をしています。
(Aボタンと同じように-1にしています)

アラームまでのカウントダウンを始める

入力された現在時間とアラーム時間からアラームまでの時間を計算してカウントダウンを始めます。
最後に音楽を鳴らします。

カウントダウンの開始はロゴマークがタッチされたときにしました。

まずは、カウントダウンが始まったことを知らせるために「START」と表示します。

現在時間をミリ秒計算する

現在の時間をミリ秒に計算しなおしています。
micoro:bitには時計機能がないため、アラームを鳴らすまでの時間を自分で計算しなければなりません。
0時0分を0ミリ秒として、現在が何ミリ秒の時点にあるのかを計算します。

まず、時間の部分に3600000ミリ秒を掛け算します。
1時間は3600000ミリ秒です。

次に、分の部分に60000ミリ秒を掛け算します。
1分は60000ミリ秒です。

ミリ秒に置き換えた時間と分を足し算します。
これで現在時間をミリ秒にすることができました。

アラーム時間をミリ秒計算する

アラーム時間をミリ秒に計算しなおしています。

処理内容は現在時間と同じです。

アラームが鳴るまでのミリ秒数を計算する

アラームが鳴るまでのミリ秒数を計算して、カウントダウンをしていけばよいです。

基本的な計算は「アラームまでの時間 ー 現在時間」になります。
先ほど計算したミリ秒をつかうので「ALARMまでのミリ秒 ー 今の時間ミリ秒」の計算です。

しかし、少しややこしい計算が必要になることがあります。
それは日付跨ぎをしている場合です。
例えば、現在が23時0分でアラームを鳴らしたいのが1時0分だった場合です。
現在時間とアラーム時間を比べたら、現在時間の方が大きな数字になるので引き算をするとマイナスの値になります。

そこで、まず現在の時間から24時までのミリ秒を求めます。
そこに、0時からアラームまでのミリ秒を足します。
これでアラームまでのミリ秒が求められます。

アラーム時間まで待って音楽を鳴らす

あとはALARMまでのミリ秒だけ処理を停止して、最後に音楽を鳴らせば完了です。

コメント

タイトルとURLをコピーしました