toio CLOCK

© CC BY 4+ visibility716
© CC BY 4+
visibility716

世界の時間がわかる、toio式アナログ時計です。toioとtoioDoで作りました。

link https://drive.google.com/file/d/1jFc3t0dJw6lE7lY3D4u857azsISJ_JmR/view?usp=sharing
動画
開発素材

ガジェット

ツール

システム構成
system image

sonyのロボットトイ「toio」とビジュアルプログラミングツール「toio Do」で作った、世界の国との時差もわかるアナログ時計です。ロボットとディスプレイの画面から、時間やアナログ時計の動き方、さらに世界の国との時差について知ることができます。

使い方

toio2台をプレイマットに置けば、それぞれアナログ時計の時針と分針になって、自動で今の時間を表示してくれます。ディスプレイ(toio Do)の画面でも、現在時刻をアナログ時計および数字(時、分、秒)で表示します。

ちょうどの時刻になったら、toioが光りながら回って知らせてくれます。その際、toio Doからも鐘の音を鳴らします。

また、画面の国旗をクリックすると、まるで時間が戻る、あるいは進むかのようにtoioが(反)時計回りしてその国の現在時刻に表示が変わります。今はアメリカ:NY(-14時間)、フランス(-8時間)、シンガポール(-1時間)、キリバス(+5時間)に対応しています。

そのままでも使えますが、時計の針と文字盤を用意することでより分かりやすく見えます。

仕組み

ブロック構成

toio Do内で役割別にスプライトを用意しました。

  • 初期設定と時差補正用のタイマー
  • アナログ時計の描画(toio Do画面内)
  • toioの制御(時針/分針)
  • 時差の設定:日本、アメリカ、フランス、シンガポール、キリバス

それぞれのスプライト間は、パラメータを変数で共有して、メッセージを送りあって動作の連携や並列処理を実装しています。

現在時刻の取得

toio Doの「調べる」機能にある「現在の○(時、分など)」ブロックで取得しています。

アナログ時計の表現(toio)

時針と分針の角度を計算して、設定した半径と三角関数からtoioの座標を求めます。 計算の制約条件は以下の通り

  • 12時を0°として、時計(右)回りを正方向とみなす
  • 元の座標系では3時が0°、反時計(左)回りが正方向となるので、(90-θ)°と座標変換して三角関数を計算
  • 時針と分針の半径は、ピクセル距離で40および80
  • toioの向きは、針の角度+90°

toioはプレイマットに触れたときに時針と分針の位置へと移動し、時間の進行に合わせて回り続けます。 プレイマットに触れたとき、まず以下の初期化処理を行います

  1. 時針(分針)の座標に移動して、向きを時針(分針)の角度+90°に揃える
  2. 「時針(分針)を動かす」メッセージを送る

メッセージを受け取った後は、以下のメイン処理(ループ)に移行する

  1. 現在時刻(+時差)からtoioの目標位置を計算
  2. toioを目標位置へ移動させる
  3. toioを時計回りに動かす場合は時針(分針)+90°に旋回させる。もし、反時計周りに動かす場合は時針(分針)-90°に旋回(時差で針を巻き戻す場合)。回る方向は、時差の補正を始めるときに時差が現在時刻より遅れているかどうかで決まる
  4. toioの座標をスプライトに反映
  5. 1~4を、マットから離れるまで繰り返す

なお円運動の処理は、toio Doのサンプル「円運動」を参考にしました。

アナログ時計の表現(toio Do)

toioがプレイマットに触れている間、マットの座標を取得して、scratch拡張機能であるペンで中心から座標までの線を引いて時針と分針を描画します。

時報

ちょうどの時間(現在時刻で分と秒が0になったとき)に、「時報のダンス」メッセージを送ってtoioを制御しつつ、時刻に合わせた音をtoio Doから鳴らしています。音は時の値が3の倍数とそれ以外の場合とで2種類あります。また、toioは光りながら左右に1秒ずつ旋回という動作を3回繰り返します。

時差の補正

toioDo画面の国旗はクリックされると「時差のカウント」メッセージを送ります。 メッセージを受け取ることで、時刻補正用のタイマーとtoioが動作します。

時刻補正用タイマーの動作は以下の通り 0. タイマー周期を1秒、1秒ごとの時差の刻み幅を0.05時間(3分)ずつと設定:初期化時

  1. タイマーをリセット
  2. (時差の刻み幅×タイマー周期)を補正値Tが時差より遅れていたら加算、進んでいたら減算する
  3. (補正値Tー時差)の絶対値が(時差の刻み幅×タイマー周期)より小さければ、補正値Tを時差にする
  4. タイマーが周期に達するまで待機
  5. タイマーをリセット
  6. 2~5を補正値Tと時差が等しくなるまで繰り返す
  7. 「時差のカウント終了」メッセージを送る

toioの動作は以下の通り

  1. 「時差のカウント」メッセージを受け取ったとき、補正値Tが時差より大きければtoioの向きを反転するフラグを立てる(反時計回りにするため)
  2. 「時差のカウント終了」メッセージを受け取ったとき、toioの向きを戻す。また、補正後の時刻が午前なら緑、午後なら青色に1秒ライトを光らせる
ストーリー

toio2台を使って、ゲーム以外のコンテンツができないかと思って作りました。toioに触れて、時計の読み方や世界の時差など時間について学ぶことができます。また、時計の針や文字盤を自作することで、オリジナルの時計を作る楽しみもあります。

toioを使った円運動と現在時刻の取得が主な課題でしたが、どちらもサンプルや機能ブロックが用意されていたのは助かりました。時差を進める(戻す)表現の実装が思ったより難航しましたが、何とか無事に実装できてよかったです。

toio Doでアナログ時計を見ながら、日本をはじめ様々な国の時差を知って、時間や時差の奥深さ、日本と世界の違いについて興味を持ってくれれば何よりです。

メンバー

Revetronique

  • user
    Revetronique @reve_tronique
    • 企画
    • デザイン・アイデア
    • 動画制作
  • user
    戸田 光紀 (Revetronique) @koki_t
    • ソフトウェア開発
    • エンジニア

関連イベント
  • event toioの「Do!コン」~キッズ審査員が思わず笑顔に!楽しいプログラムコンテスト~2021-03-17 開催
  • event ヒーローズ・リーグ 20212021-09-06 開催

同じニオイがする作品
  • event 体感型AR/MRゲーム!ユニティちゃん Magic Leap ホッケー!
  • event 「猫になる」VR
  • event ペーパーカンパニー
  • event 癒し系'ネコロボ'を楽器でかまっちゃおう!

Proto lovers ♥
user
user
user
user
user
user
user
user

イベントまとめ

コンテストまとめ

作品を登録しよう

モノづくりしている人に、つくった作品を見てもらえ、リアクションがもらえるかも?

close

目次


Proto lovers ♥
user
user
user
user
user
user
user
user