toio2台を使って、ゲーム以外のコンテンツができないかと思って作りました。toioに触れて、時計の読み方や世界の時差など時間について学ぶことができます。また、時計の針や文字盤を自作することで、オリジナルの時計を作る楽しみもあります。
toioを使った円運動と現在時刻の取得が主な課題でしたが、どちらもサンプルや機能ブロックが用意されていたのは助かりました。時差を進める(戻す)表現の実装が思ったより難航しましたが、何とか無事に実装できてよかったです。
toio Doでアナログ時計を見ながら、日本をはじめ様々な国の時差を知って、時間や時差の奥深さ、日本と世界の違いについて興味を持ってくれれば何よりです。
sonyのロボットトイ「toio」とビジュアルプログラミングツール「toio Do」で作った、世界の国との時差もわかるアナログ時計です。ロボットとディスプレイの画面から、時間やアナログ時計の動き方、さらに世界の国との時差について知ることができます。
toio2台をプレイマットに置けば、それぞれアナログ時計の時針と分針になって、自動で今の時間を表示してくれます。ディスプレイ(toio Do)の画面でも、現在時刻をアナログ時計および数字(時、分、秒)で表示します。
ちょうどの時刻になったら、toioが光りながら回って知らせてくれます。その際、toio Doからも鐘の音を鳴らします。
また、画面の国旗をクリックすると、まるで時間が戻る、あるいは進むかのようにtoioが(反)時計回りしてその国の現在時刻に表示が変わります。今はアメリカ:NY(-14時間)、フランス(-8時間)、シンガポール(-1時間)、キリバス(+5時間)に対応しています。
そのままでも使えますが、時計の針と文字盤を用意することでより分かりやすく見えます。
toio Do内で役割別にスプライトを用意しました。
それぞれのスプライト間は、パラメータを変数で共有して、メッセージを送りあって動作の連携や並列処理を実装しています。
toio Doの「調べる」機能にある「現在の○(時、分など)」ブロックで取得しています。
時針と分針の角度を計算して、設定した半径と三角関数からtoioの座標を求めます。 計算の制約条件は以下の通り
toioはプレイマットに触れたときに時針と分針の位置へと移動し、時間の進行に合わせて回り続けます。 プレイマットに触れたとき、まず以下の初期化処理を行います
メッセージを受け取った後は、以下のメイン処理(ループ)に移行する
なお円運動の処理は、toio Doのサンプル「円運動」を参考にしました。
toioがプレイマットに触れている間、マットの座標を取得して、scratch拡張機能であるペンで中心から座標までの線を引いて時針と分針を描画します。
ちょうどの時間(現在時刻で分と秒が0になったとき)に、「時報のダンス」メッセージを送ってtoioを制御しつつ、時刻に合わせた音をtoio Doから鳴らしています。音は時の値が3の倍数とそれ以外の場合とで2種類あります。また、toioは光りながら左右に1秒ずつ旋回という動作を3回繰り返します。
toioDo画面の国旗はクリックされると「時差のカウント」メッセージを送ります。 メッセージを受け取ることで、時刻補正用のタイマーとtoioが動作します。
時刻補正用タイマーの動作は以下の通り 0. タイマー周期を1秒、1秒ごとの時差の刻み幅を0.05時間(3分)ずつと設定:初期化時
toioの動作は以下の通り