【embotでプログラミングを学ぼう①】命令は1列に整列!:解説編
目次
- 【embotレベル】1
- 【プログラムの技】順次処理
- 【主に使うプログラム】ロボット、モーター、ライト、ブザー、せいぎょ
embotは組み立てただけでは動きません。みなさんがプログラムを作成すると、embotがそのプログラムの内容を理解して、動いたり光ったり音を出したりできるようになります。みなさんはembotのプログラマーです。embotの機能を作るために、いろいろなプログラムの技をマスターしましょう!今回は一番基本となるルールです。
命令はいちどに1個だけ順番に並べよう
プログラミングと聞くと、なにやら複雑なイメージがあるかもしれません。ですが、とてもシンプルでわかりやすいルールがあります。それは、「命令は1個ずつ順番に並べる」ということです。
embotはいちどに1個の命令しか受け取れないので、レベル1でプログラムを作るときは、命令を1列に整列させましょう。そして、1列に並んだ命令を上から順に流れるように実行していくことを「順次処理」と呼びます。
embotでやってみよう(1)ブザーとライト
embotで「順次処理」のプログラムを作ってみましょう。embotアプリのプログラミング機能で「レベル1」に設定し、「新しいプログラム」を作成します。
画面左側にはカテゴリーごとにいろいろなブロックが用意されています。このブロック1個がひとつの命令です。ブロックをどんどん順番に一列につないでいけばプログラムを作ることができます。
[start]の次にロボットの設定ブロックをつなぎ、プログラムするロボットを選びます。続いて[ライトをつける][ブザーをならす]のブロックをつなげてください。下の図の通りにプログラムを作ると、embotはどんな風に動作すると思いますか?ライトがついたあとに、ブザーが鳴りそうですね。
ところが、プログラムを実行してみると、embotのライトがつくと同時にブザーが鳴ります。プログラムの命令は、確かに上から[ライトをつける][ブザーをならす]の順で実行されているのですが、猛スピードで次々に実行されるので、ライトとブザーが同時に動作しているように感じるのです。
さて、このままでは、ライトはつきっぱなし、ブザーは鳴りっぱなしになってしまいます。そこで、[ライトをけす][ブザーをとめる]を続けていれることにします。こうすればライトとブザーがついたあとに消えてくれそうですね。
ところが、このプログラムを実行してみると、ライトがついたのかブザーが鳴ったのかよくわからないまま終わってしまいます。プログラムは、流れるようにさーっと実行されるので、ライトもブザーも「オン」になった直後に「オフ」にする指示を受け、オンになっている状態がほぼ見えないのです。
そこで、「オン」の状態になったあと、プログラムが先に進まないように少し待つことにします。[せいぎょ]カテゴリーにある[○秒待つ]という命令ブロックを使います。少しの間待っていてくれればいいのですが、embotには、はっきり数字で指示しなければ通じません。待つ秒数を数字で指定しましょう。
これで、ライトとブザーが3秒間「オン」になって消えるというプログラムが完成しました。
embotでやってみよう(2)サーボモーター
次に、embotの手の動かし方を押さえておきましょう。手は、サーボモーター(以下サーボ)でコントロールしています。サーボを動かすプログラムの命令ブロックは[モーター]のカテゴリーにあります。
手を動かしたいときは、手の向きを角度で指定します。0°から180°まで、下の図のように決まっているので、数値で指定しましょう。マニュアル通り組み立てれば、左手が[サーボ1]で右手が[サーボ2]になります。
参照:embot組み立てマニュアル(https://www.embot.jp/embotters)(p6)
初めてサーボを使うときや、手のパーツをサーボから外したときは、手のパーツを正しい向きに取り付ける設定が必要です。サーボは目で見てもどの角度を向いているのかわからないので、次の手順で向きを合わせます。
まず、サーボを90°の位置に向けるプログラムを作り、実行します。実行後、手を上向きに取り付けます。これで、サーボが90°のときを基準に手の向きが定まりました。参照:embotプログラムマニュアル(https://www.embot.jp/embotters)(p4-9)
では、実際に手を動かしてみましょう。例えば、embotの左手を、外側に横向き→上向きの順に動かすにはどうしたらよいでしょうか?手の向きを角度に置き換えて、[サーボ1の角度を「0(度)」にする][サーボ1の角度を「90(度)」にする]と指定すれば良いはずです。
ただし、このとき、ふたつの命令の間に[○秒待つ]をいれるのを忘れないでください。プログラムは上から流れるように猛スピードで実行されるため、途中で待つ時間を作らないと、サーボが動き終わる前に次の命令がサーボに届いてしまうのです。
[○秒待つ]にいれる秒数は、「0.5」のように小数点でも入れられます。何秒にするというルールはないので、実際に動かしてほど良いと感じる秒数を入れましょう。
続いて、この技を使った課題に挑戦します
→【embotでプログラミングを学ぼう①】命令は1列に整列!!:課題編