「小学生ロボコン自律型キット A.I.ロボット」をプログラミングで制御しよう
(練習編)
モーターを動かすには?
一つのモータを制御するには3のピンが必要になります。例えば今回作成した「A.I.ロボット」のモータードライバーを見てみましょう。モータードライバーには、下の写真のように6本のケーブルがArduino UNOとつながっています。
ピンのところには左からENA、IN1、IN2、IN3、IN4、ENBと書いてあります。このモータードライバーはENA、IN1、IN2を左側のモーター制御に、IN3、IN4、ENBを右側のモーター制御に使用しています。
左側のモータの制御について説明していきます。3ピンのうちIN1、IN2はケーブルをたどるとArduino UNOのS4、S5のデジタル出力ピンにつながっています。また、ENAはS3のPWMの役割を持つピンにつながっています。
モーターの回転方向、モーターの停止はIN1、IN2の2ピン(S4、S5のデジタル出力ピン)の高(HIGH)、低(LOW)の組み合わせで決まっていきます。また、モーターの速さはENAピン(S3のPWMピン)を使って指定することができます。下は組み合わせの一覧です。
これにENAにモーターの強さを指定することで、モーターが動くことになります。モーターの強さは0~255の範囲で指定でき、数値が大きいと回転が速くなります。
このプログラムコードでは、UNO側のデジタルピンのS4の出力を「高」、S5の出力を「低」にすることで左モーターを正回転させようとしています。しかし、モーターの速さを0にしているので回転しません。これを「ずっと」というコマンドで挟むことで、ずっとこの動作を繰り返します。
プログラムをマイコンに書き込む方法
1. サンプルプログラムの作成
中央のタイルの選択部分からドラッグして、以下のプログラムを作成してみましょう。
2.
PCとマイコン(Arduino UNO)をつなぐためにキットに入っている青いUSBケーブルを使います。
写真のようにつなぎます。マイコン・モータードライバー・センサーがすべて光っている接続されたことが分かります。
3.
次にPCに戻り、左の写真にある接続をクリックします。するとUSBポートの選択画面が表示されるので、「すべての接続可能なデバイスを表示する」にチェックをつけて接続をクリックします。
4.
アップロードをクリックするとマイコンへの書き込みがスタートします。
5. 書き込みが完了したらマイコンからUSBケーブルを抜き、9V乾電池をスナップケーブルに
つなげます。この時点ではロボット中央に取り付けたスイッチがONになっていないので
ロボットから明かりが消えます。
スイッチをオンにするとロボットの動作が始まります。いきなり動き出すのでロボット
を持ち上げながらスイッチをオンにしてみてください。左モーターが前に進む方向に回転
したら成功です。
動作の確認を終えたら、9V乾電池は抜くようにしましょう。
これ以降は、プログラム作成 → 接続 → USBポート選択にチェックマーク → 接続
→ アップロード → 9V乾電池接続 → スイッチON
という形でロボットを動かすことになります。
作業にキリをつけたい時や重要なプログラムの時はこまめに保存するようにしましょう。
ロボットを走らせよう
※これから各動作のプログラムを説明します。動作を確認したい場合には、イベントから
「Arduino UNOが起動したとき」というタイルをプログラムの先頭に付けることで実行できます。
1. 前進をするためには?
前進をするには左右のモーターを両方とも前に進む方向に回転させればロボットが前に進む
はずです。以下のプログラムを作成してみましょう。
このプログラムでは、上半分の3つのタイルで左側のモーター、下半分の3つのタイルで右側のモーターを前回転するように作られています。
2. 後進をするためには?
後進をするには左右のモーターを両方とも後ろに進む方向に回転させればロボットが後ろに進む
はずです。以下のプログラムを作成してみましょう。
このプログラムは前進のプログラムの高・低を逆にしたものです。
3. 回転をするためには?
回転をするには左右のモーターが逆向きに回転するとロボットが回るような動作をするはずで
す。以下のプログラムを作成してみましょう。
<時計回り>
このプログラムは左モーターを前、右モーターを後ろ向きに回転させたものです。
<反時計回り>
このプログラムは左モーターを後ろ、右モーターを前向きに回転させたものです。
4. ブレーキをかけるには?
ブレーキはロボットを止めるときなどに使用します。モーターをどちらも回転させなければ、
ロボットも止まります。以下のプログラムを作成してみましょう。
このプログラムは制御を高(high)と高(high)の組み合わせにして、両方のモーターに動かさないという指令を出しています。
おさらい
練習1
前進を1秒した後、後進を1秒するプログラムを作ってみましょう。また、ロボットに接続して、動きを確認してみましょう。
練習2
前進を1秒した後、それよりも遅い速度で1秒前進をするプログラムを作ってみましょう。また、ロボットに接続して、動きを確認してみましょう。
練習3
時計回りに180°回転した後1秒停止し、反時計回りに180°回転するプログラムを作ってみましょう。また、ロボットに接続して、動きを確認してみましょう。