ストップウォッチでロボットを動かす | Scrachとロボットプログラミング
今回はWEB用スクラッチ3.0のタイマー機能を使い、ストップウォッチ機能を実験してみます。スクラッチのタイマー機能で、ある指定の秒数になると何か終わりのアクションをさせて、プログラム全体をストップさせるようにしてみます。終わるまでの間は1秒おきに現在秒をしゃべらせ、指定秒になったら「おわり」と言ってからプログラムを終わらせます。
クムクムスクラッチ起動
まずは ココ をクリックして、プログラミングツール画面選択ページを開きます。
次に左側下の WEBスクラッチ起動からクムクム専用スクラッチを起動します。
クムクムロボットとの接続
クムクムロボットをお手元に持っている方は以下の操作を行いクムクムロボットの機能を呼び出し、Bluetooth機能でクムクムロボットとパソコンをワイヤレス接続します。
クムクムロボットを持っていない方はそのままスクラッチだけの機能を使用します。
以下の動画では、クムクム拡張機能の呼び出しからロボットへの接続手順までです。
タイマーブロックを使ってプログラミングを行う
[コード]-[調べる]の中にある[タイマーをリセット][タイマー]の2つのブロックを中心に下記のようなプログラムを作ります。
変数にはあらかじめ、[前秒][今秒]の2つを新しく作って用意してください。
プログラムの解説
まず[スタートフラグ]がクリックされるとこのプログラムはスタートします。
プログラムスタートと同時に、タイマーの値はリセットされ、0.0000秒になります。
そして、[前秒]という変数の値を0にしておいてから動きのループ[ずっと]に入ります。
〇[ずっと]ブロックの中では….
↓まず、現在のたーまーの値を取得し変数[今秒]に代入します。
↓この時、0.0000だと細かすぎるので四捨五入をすることで小数点をカットした整数の部分だけを取り出します。
↓そして、今取得した時間[今秒]と、先ほど0にした[前秒]を比較してみます。
↓〇このとき[今秒]が[前秒]と異なっていたら異なっていたら….つまり時間の秒が変化したら
↓→まずは[前秒]を新しい今取得した時間にセットしおしゃべりをするための動きを呼び出すメッセージを送ります。
↓→このメッセージを受けたらクムクムロボットはその秒をおしゃべりします。
↓→次に、今代入した[前秒]が10になったら….つまり10秒たったら、おわりの動きを呼び出すメッセージ「おわり」を送ります。
↓→→そしてプログラムを止めてしまいます。
秒数を1秒ごとにしゃべらせるために
例えば、簡単にずっとで単純に秒数をしゃべらせてしまう下記のようなプログラムを作った場合、プログラムは「ずっと」ブロックを高速に回転させてしまい、なんどもなんども同じ秒数をしゃべらせてしまうことになります。
これはプログラムでいう「ビジーループ」の状態になってしまい、どんどん処理がたまっていってしまうことにもなりますので、ここでは秒数が変化したら…つまり、前の秒数と今の秒数が変化したときだけしゃべるという処理にして、ここでは1秒単位でしゃべるように処理をしています。
今日のプログラミングのポイント
今日のプログラミングでは、変化を取得するために前の状態と今の状態を変数で記憶し、更新をしていく処理を使いました。
また、スクラッチでは、メッセージによって一定の間隔で動作を行うように作ってみました。
ロボットを持っていない方は….
ロボットがしゃべっている部分をCATの吹き出しでしゃべる処理にするといいでしょう。