【ヘルプ】ブロックがスキップされて動くとき(動く時間を考えてプログラミングしよう!)
Scratchのイラストは問題なく動くのに、ココロキットを動かそうとすると思ったように動かない…。いくつかのブロックを並べると、動きに反映されていないブロックがある…。それは画面上ではなく実世界でロボットを動かそうとするから起きている問題かもしれません。
それを解決する方法の1つをお話しします。
もし、下の動画のような「2つのモータを同時に動かしたい!」と思っているなら、このノートではなく動画の下の記事に進んでくださいね!
でも、このノートもロボットプログラミングには大事なことが書いてありますので、読んで貰えると嬉しいです。
では解説していきます。
例えば以下のプログラム。ココロキットのようなロボットプログラミングでは思ったように動かないんですよね。
はじめに、下のブロックは画面の中だと問題なく動きます
下のブロックは以下のような動きを作っています。
1. 「右」に100度回す
2. 「左」に50度回す
3. 「右」に100度回す
4. 「左」に50度回す
結果はどうなるでしょうか。
結果は…、Scratchの右上のジッタン(生きものロボットキット)が最初の場所から右に100度回っています。
画面の中の Scratch だと、一瞬で4回動けるんです!
しかし、この動きをクルマで考えてみると…。
ロボットプログラミングは画面の中のプログラミングと違って、机の上で動くロボットや道路を走っている車の動きを作るプログラミングです。
ここでは、クルマのハンドルを回す4つの動きを考えてみましょう。
1. ハンドルを「右」に回す
2. ハンドルを「左」に回す
3. ハンドルを「右」に回す
4. ハンドルを「左」に回す
クルマのハンドルを回す動きをまねしてみると、どうでしょうか?
Scratch の画面の中のように一瞬で4回も右左右左とハンドルを回せないですよね。どんだけシュバババッと早く動かしても画面の中のように早くは動かせません。
この「動かすのは時間がかかる」というのがロボットをプログラミングする時には大切な考えです!
じゃあどうすればいいの? 👉 動かす時間を考えよう!
ロボットをどう動かしたいかを考えたら、それにプラスしてどのくらいの時間その動かしたいかを考えましょう!
「右のモータを100で回転」を「1秒続ける」という感じです!
これはScratchのブロックだと次のように作ることができます。
上のブロックはこんな考えで作っています。
1. 右のモータを回す。それを1秒間続ける。
2. 次に、右のモータを逆回転にする。それを1秒間続ける。
3. そして、右のモータを回す。それを2秒間続ける。
4. 最後に、左のモータを回す。それを2秒間続ける。
時間を考えると、自分が考えたように
ロボットを動かせるようになります!
ちなみに…、上のブロックは最後2秒続けるではなく、ずっと回り続けます。どうしてでしょうか?(答えはこの記事の最後に!)
ココロキットの限界を調べてみよう
1秒なんて長すぎる!たしかにそうだ。もっと短く動かしたいですよね。
でも「一瞬、右のモータを回す」という動きを作りたいときにも、一瞬が○○秒かを自分で決めないといけません。プログラムは一瞬という言葉を理解できないんです。
そういう時には「0.2秒間待つ」という風に1秒以下の数値を設定できます。
ココロキット開発チームでは0.2秒を「すごく短い時間の動き」のために使っています。
さっきハンドルを手で回したときに限界があるように、ココロキットにも次の動きをするための限界があります。
もしかしたら、あなたのパソコンだともっと早くできるかもしれませんし、もう少し遅くする必要があるかもしれません。
自分が使うココロキットとパソコン(タブレット)で調べてみてね!
止まらない理由の答えは…、
2秒間動かしたあとに「止める」ブロックを入れていないから でした!
この記事が気に入ったらサポートをしてみませんか?