ロボカーのテストもかねて、最初に直線を描いてみよう。プログラムはこんな感じだ。
プログラムを入力したら、[実行]メニューの[プログラム作成・転送]でスタディーノに転送しよう。
転送が終わったら、USBケーブルを抜き、サインペンのキャップを外す。このとき、ペンの先が2つの後輪を結んだ線よりも少し下に飛び出すようにペンの位置を調整するのがコツだ。
電池ボックスのスイッチをONにして、紙の上にロボカーを置き、赤外線フォトリフレクタに手をかざすと、ロボカーが1秒動いてから止まるはずだ。ちゃんと線は引けたかな? もし引けないようなら、ペンの位置を調整して、もう一度試してみよう。再スタートは、リセットボタンを押して、赤外線フォトリフレクタに手をかざそう。
ちゃんと線が引けたら、電池ボックスのスイッチをOFFにして、サインペンにキャップをつけておこう。
今は適当な長さの線を描いたけど、長さを決めて線が描けるように、動かす秒数(delay)を調整するよ。紙に描かれた線の長さを定規で測り、その数値を記録しよう。次の写真は実際に試したものだ。約10.7cmだね。
1秒間で10.7cm動いたということは、1cm動くのにかかった秒数は、1(秒)を10.7(cm)で割った数になる。ここで、動かしたい距離(線の長さ)をlengthとすると、その数にlengthをかければdelayが求まるね。
delay = 1 ÷ 10.7 × length
これをプログラムに当てはめ、同時に、再利用しやすいようにforward関数として定義しよう(写真)。
プログラムを入力したらスタディーノに転送して、さっきと同じように紙の上でロボカーを動かしてみよう。線の長さは大体10cmになったかな? 今回のしくみでは、長さの厳密な制御はできない。また、電池の消耗具合や床との摩擦などでも結果は変わるので、数cmの誤差は出ると思う。
確認できたら、電池ボックスのスイッチをOFFにして、サインペンにキャップをつけておこう。
次に、ロボカーが決められた角度で右回りするにはどうすればよいかを考えてみよう。まず、ハンドルを右に切って(サーボモーターの角度を180°にして)、あとは直線のときと同じように、1秒間DCモーターを回転させたときの角度を測り、1°あたりの秒数を計算してdelayの値を求めればいいね。
これを実際に試したのが次の写真だ。曲がるときにちょっとペンが動いているけど、約50°だね。
式はこのようになる。角度の変数はangleにしたよ。
delay = 1 ÷ 50 × angle
プログラムは次のページのようになる。右回りの関数はturnRightとした。
このプログラムをスタディーノに転送して、ロボカーで線を描いて確認してみよう。回る角度が90°にならないときは、「(1/50)* angle」の50を変えよう。90°以上回るときはこの数を大きく、90°以下のときはこの数を小さくして、うまくいくまでプログラムの転送と角度の測定を繰り返そう。これも長さと同じように、多少の誤差は仕方がないね。
好きな長さの線を、好きな角度で描けるようになったので、いろいろな多角形を描いてみよう。
正方形は、4つの辺が同じ長さで、4つの頂点の角度が直角(90°)の四角形だね。1辺の長さが10cmなら、10cm進んで、右に90°曲がる…を4回繰り返せばいいかな。
正五角形の場合は、それぞれの頂点で72°回る。
星形(五芒星)だと、頂点で曲がる角度は2倍の144°になる。正多角形の頂点で曲がる角度と、頂点の数には関係があるので、その法則を調べてみるとおもしろいよ。
後に、渦巻き模様を描くプログラムを紹介しよう。解説はしないので、なぜこうなるのかは自分で考えてみてね。動画はこちらhttps://www.youtube.com/watch?v=sNTSkyW7j9k&feature=youtu.be でチェック!