プログラミングドリル

スクラッチでアナログ時計を作ってみよう②(連続秒針)

Scratch先生
Scratch先生

こんにちは、みなさん!
Scratch先生です。

「スクラッチでアナログ時計を作ってみよう①」では、「ステップ秒針」のアナログ時計のプログラムを作りました。
今回は、「連続秒針」のアナログ時計のプログラムを作ってみよう!

プログラムの中身だけ知りたい人は、下をクリックしてね。

プログラムを確認する ⇩

今回、プログラミングに挑戦する「連続秒針」のアナログ時計は、こちらです。

緑の旗をクリックすると、アナログ時計が現在の時刻を示します。

スポンサーリンク

アナログ時計の秒針の動き

アナログ時計の秒針の動きには、2種類あります。

  • ステップ秒針
  • 連続秒針

ステップ秒針とは、みなさんが前回プログラミングした1秒間に6度ずつ動くタイプの秒針です。

連続秒針とは、文字盤の上をもっと細かく、連続的に秒針が動くタイプの秒針です。

つまり、連続秒針にするには、1,2,3秒ではなく、0.1、0.2、0.3秒のようにもっと小さな秒で動かすということです。

連続秒針で動くプログラムを考える

連続秒針にするには、1,2,3秒ではなく、0.1、0.2、0.3秒のようにもっと小さな秒で動かさなければいけません。

1秒より小さい秒には、「ミリ秒」という単位があります。

1ミリ秒は、1秒の1/1000の時間です。

  • 1ミリ秒=1/1000秒=0.001秒
  • 10ミリ秒=10/1000秒=0.01秒
  • 100ミリ秒=100/1000秒=0.1秒
  • 10000ミリ秒=1000/1000秒=1秒

「秒針」のプログラムでは、「現在の▢(ローカルタイム)」ブロックを使って、現在の秒の数値を取得していましたが、ミリ秒の数値までは取得できません。

ミリ秒単位の時刻

スクラッチでミリ秒単位の時刻を取得したい場合は、「調べる」ブロック群の「2000年からの日数」ブロックを使います。

「2000年からの日数」ブロックは、UTCの2000年1月1日午前0時0分0秒からの経過日数を返す。

協定世界時 (UTC)は、世界各国標準時の基礎となるもので、セシウム原子時計によって刻まれる国際原子時を基に国際的に管理されています。

簡単にいえば、イギリスのロンドンの時刻が基準ということです。

日本が昼なら、裏側のブラジルは夜といったように、時間には、国によって時差がありますよね?

日本とロンドンの時差は、「9時間」です。(日本が9時間進んでいる)

よって、「2000年からの日数」ブロックを使うとき、日本時間での2000年からの日数を知るには、「9時間」を足す必要があります。

9時間を日数に変換すると、

9時間÷24時間=0.375

となります。

よって、「〇+〇(足し算)」ブロックを使って、「0.375」を足すと、日本時間での2000年からの「日数」を取得できます。

ここで、取得できるのは日数ですので、それを秒に変換します。

  • 1日=24時間
  • 1時間=60分
  • 1分=60秒

こちらは、分かりますよね。

  • 1日=24時間
  • 24時間×60分=1440分
  • 1440分×60秒=86400秒
  • 1日=86400秒

1日を「秒」に変換していくと、「86400秒」になります。

よって、「〇*〇(掛け算)」ブロックを使って、「86400」を掛けると、日本時間での2000年からの「秒数」を取得できます。

こちらのブロックをクリックすると、「755008941.1500001」が取得できました。

この数値の少数「0.1500001」が、ミリ秒の時間です。

プログラミングチャレンジ1
Scratch先生
Scratch先生

Scratch先生から子供たちへの挑戦状です!

クリアできるかな?

ミリ秒の少数「0.1500001」を含んだ現在の秒数を取得するには、どのようにプログラミングしたらいいでしょうか?

〇を〇で割った余り」ブロックを使って、ミリ秒の少数を含んだ現在の秒数を取得してみましょう。

「〇を〇で割った余り」ブロックは、1番目の〇の値を2番目の〇値で割ったときの余りの値を返します。

ミリ秒の少数を含んだ現在の秒数を取得できましたか?

「ミリ秒の少数を含んだ現在の秒数」というが、分かりにくかったかな?

計算が分からない子は、実際に分かりやすい例題を作って考えてみましょう。

例えば、1時2分13.541秒を「秒数」だけで表すと、

1時2分13秒=1時×3600秒+2分×60秒+13.541秒=3600秒+120秒+13.541秒=3733.541秒

になるよね。(1時間=3600秒、1分=60秒)

「ミリ秒の少数を含んだ現在の秒数」というのは、この3733.541秒の中の「13.541秒」の部分です。

つまり1分に満たない秒数だけ取り出せればいいので、3733.541秒を分に変換した余りが、1分に満たない秒数「13.541秒」ということになります。

秒を分に変換する計算式を覚えていますか?

秒を分に変換するには、「60」で割れば、よかったですよね。

つまり、日本時間での2000年からの「秒数」を60で割った余りが、「ミリ秒の少数を含んだ現在の秒数」になります。

現在の秒針の角度=現在の秒数×6度

現在の秒針の角度を出すには、現在の秒数に「6度」を掛けてあげればよかったですよね。

よって、「ミリ秒の少数を含んだ現在の秒数」に6度をかけたプログラムを「〇度に向ける」ブロックの〇に入れたら、連続秒針プログラムの完成です。

緑の旗をクリックして、連続で秒針がずっと動くか確認しましょう。

連続秒針のプログラムでは、ミリ秒の秒数を求めればよかったので、わざわざ日本時間にする必要はありません。

時差の9時間も60で割り切れて余らないため、「0.375」を足さなくても、同じようにミリ秒の秒数は求められることを理解しておきましょう。

まとめ

Scratch先生
Scratch先生

スクラッチでアナログ時計(連続秒針)のプログラミング方法は、理解できたかな?

「スクラッチでアナログ時計を作ってみよう②」では、「連続秒針」のアナログ時計のプログラムを作っていきました。

完成したプログラムの中身を見たい人は、こちらから確認してください。

プログラムを確認する  >

次回は、スクラッチでデジタル時計のプログラムを作ります。

デジタル時計のプログラムを作りたい子は、次の「スクラッチでデジタル時計を作ってみよう①」へ進みましょう!


【Step6】スクラッチでプログラミング!

【Step5】「キー」「マウスクリック」のプログラムに挑戦!

【Step4】歩くプログラムに挑戦!

【Step3】スクラッチとプログラミングの基本知識

【Step1・Step2】スクラッチアカウント作成とログイン方法

アナログ時計のプログラム

アナログ時計のプログラムは、こちらの通りです。

「秒針」のプログラム

「秒針」は、60秒で1周(360度)。

「秒針」が、1秒間に進む角度は、

360度÷60秒=6度

現在の「秒」から秒針の角度を求める計算式は、

現在の秒針の角度=現在の秒数×6度

連続秒針は、文字盤の上をもっと細かく、連続的に秒針が動くタイプの秒針。

連続秒針にするには、1,2,3秒ではなく、0.1、0.2、0.3秒のようにミリ秒で設定する必要がある。

「2000年からの日数」ブロックを使った、「ミリ秒の少数を含んだ現在の秒数」を取得するプログラム。

日本時間9時間の時差を日数に変換すると、

9時間÷24時間=0.375

1日を「秒」に変換していくと、

24時間×60分×60秒=86400

「分針」のプログラム

「分針」は、60分で1周(360度)。

「分針」が、1分間に進む角度は、

360度÷60分=6度

現在の「分」から分針の角度を求める計算式は、

現在の分針の角度=現在の秒数×6度

「時針」プログラム

「時針」は、12時間に1周(360度)。

「時針」が、1時間に進む角度は、

360度÷12時間=30度

「時針」が、1分間に進む角度は、

30度÷60分=0.5度

現在の「時」「分」から時針の角度を求める計算式は、

現在の時針の角度=現在の時数×30度+現在の分数×0.5度