LPCXpressoの最近のブログ記事

トレース課題8
 ラインが直角に交差する八の字コースをトレースできるプログラムを考えましょう。

考え方
 直角に交差する部分では左右両方のセンサがコースに反応したとき、直角交差と判断します。このとき、車体を直進させます。判断する順番は、直角交差=>左カーブ=>右カーブの順番とします。

12_br_sensor.jpg
 左右にカーブのあるひょうたんコースをトレース走行できるプログラムを考えましょう。

考え方
 右カーブ、左カーブ、直線の各コースを組み合わせれば完成できます。

コースの作成
 A4プリンタ用紙4枚をのりで貼り合わせます。マジックで写真を参考にしてコースを描きます。

10_br_sensor.jpg
トレース課題6
 課題5を参考にして左カーブを走行できるプログラムを考えましょう。

8_br_sensor.jpg
 センサを使って白地に黒で描いたコースをトレースして走行できるプログラムを考えましょう。まずは右カーブと直進を考えます。

右カーブ
 右センサに黒いコースが反応したときに、右にカーブしていると判断して、車体を右に旋回します。右旋回はモータ課題のrigth()関数を使います。

直進
 左右のセンサが無反応の時、コースは直進していると判断して、車体を前進します。直進にはモータ課題のforword()関数を使います。

7_br_sensor.jpg
トレース課題4
 課題1~3のまとめになります。次の条件でLEDが点灯・消灯するようにプログラムを考えましょう。

  左センサのみ・・・橙LED、右センサのみ・・・緑LED
  両センサ反応・・・橙緑両LED
  両センサコース外・・・両LED消灯
トレース課題3

 左右のセンサを読み取り、両センサが黒ライン上にある時に、橙緑両LEDを点灯するプログラムを完成しましょう。課題1と課題2を参考にして考えてください。

2_br_sensor.jpg
トレース課題2
 右センサを読み取り、黒ライン上にある時に緑LEDを点灯するプログラムを完成しましょう。

■■右センサのプログラミング
 右センサの値を読み取るC言語プログラミングは次のようにします。
unsigned int RSensor; 
RSensor=ADRead(1);


4_br_sensor.jpg
 ビュートローバーは標準で二つのセンサを装備しています。このセンサを使ってみましょう。

センサについて
 センサは赤外線LEDを発光させて反射した光を赤外線受光素子で受光します。
 ビュートローバに装備されている赤外線センサの動作はビュートビルダを楽しんだときに確認しました。今回はセンサ出力が256より大きければ検出としています。

1_br_sensor.jpg
 完成したforword()やleft()などの関数を使って課題に挑戦しましょう。

モータ課題7
 左回りに四角く走行するスクエア走行をプログラムしてください。具体的な走行シーケンスは下のとおりです。

  前進1秒 =>左直角旋回 =>前進1秒 =>左直角旋回 =>前進1秒 =>左直角旋回 =>前進1秒 =>停止 =>LED点滅

2_motor_kadai.jpg
 完成したforword()やright()などの関数を使って課題に挑戦しましょう。

モータ課題7
 右回りに四角く走行するスクエア走行をプログラムしてください。具体的な走行シーケンスは下のとおりです。

  前進1秒 =>右直角旋回 =>前進1秒 =>右直角旋回 =>前進1秒 =>右直角旋回 =>前進1秒 =>停止 =>LED点滅

1_motor_kadai.jpg
モータ課題6
 モータ課題5に加えて右旋回、左旋回を関数化しましょう。関数名は次のとおりです。

  右旋回:right()
  左旋回:left()

 動作としては前進してから逆L字に曲がります・・・前進1秒 =>右直角旋回 =>前進1秒 =>左直角旋回 =>前進1秒 =>停止
 直角左右旋回は時間をうまく調整してください。

2_motor_kadai.jpg
 モータ課題4まででビュートローバーの基本走行ができるようになりました。この課題では前進、後進、停止をC言語の関数化して使いやすくすることを考えます。

モータ課題5
 前進、後進、停止を関数化しましょう。関数の名前は次のようにします。
   前進:forword()、後進:back()、停止:qstop() 
 動作としては・・・前進1秒=> 停止1秒=> 後進1秒=> led_flash()による点滅
とします。
 右Uターンはうまくできましたか? 同じ要領で左Uターンをプログラムしましょう。

モータ課題4
 前進1秒 =>左Uターン旋回=> 前進1秒 =>停止 するプログラムを考えましょう。

■■考え方
  前進:Mtr_Run_lv(10000,-10000,0,0,0,0)
  右旋回:Mtr_Run_lv(-10000,-10000,0,0,0,0)
  左旋回:Mtr_Run_lv(10000,10000,0,0,0,0)

 モータ課題に慣れてきましたか? 応用してみましょう。

モータ課題3
 前進1秒 =>180°右Uターン旋回 =>前進1秒 =>停止 させましょう。
 モータの動かし方はわかりましたか? 今度は後進するプログラムを考えましょう。

課題2
 ビュートローバーを前進1秒 =>停止 =>後進1秒 =>停止 させるプログラムを作成しましょう。

モータ命令
 前進のプラス、マイナスを入れ替えます。

■■使用例
Mtr_Run_lv(-10000,10000,0,0,0,0)
 モータを動かして、ビュートローバーARMを走行させましょう。
 ビュートローバーARMは搭載している二つのDCモータを動かして走行します。最初は指示通りに動かすシーケンス走行を楽しみましょう。

モータ命令の説明
 モータを回転・停止するにはMtr_Run_lv()を使います。





カテゴリ


Copyright (C) 2006-2015 CQ Publishing Co.,Ltd. All Rights Reserved.