- 追加された行はこの色です。
- 削除された行はこの色です。
[[2007a/MemberOnly/進行状況A]]
/**/
#contents
#define MOTOR OUT_A+OUT_C //
#define THRESHOLD 40 // 闘値を設定
#define RUN_TIME 150 //
*課題2・黒い線に沿って動くロボット [#ge99588a]
2つの光センサーが白を感知して進みます。それによって、ロボット本体を黒の線上を進むようにしました。
**【メンバー】 [#t1e2029d]
・宮原
・大益
**【ロボット紹介】 [#j76913f3]
**【プログラム】 [#q7a68997]
#define MOTOR OUT_A+OUT_C
#define THRESHOLD 40 // 闘値を設定
#define RUN_TIME 150
task main ()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);// センサ1が光センサであることを定義
SetSensor(SENSOR_3,SENSOR_LIGHT);// センサ3が光りセンサであることを定義
SetSensor(SENSOR_2,SENSOR_TOUCH);// センサ2がタッチセンサであることを定義
SetSensor(SENSOR_1,SENSOR_LIGHT); // センサ1が光センサであることを定義
SetSensor(SENSOR_3,SENSOR_LIGHT); // センサ3が光センサであることを定義
SetSensor(SENSOR_2,SENSOR_TOUCH); // センサ2がタッチセンサであることを定義
while(true){
if(SENSOR_1 > THRESHOLD){
if(SENSOR_3 > THRESHOLD){
OnFwd(MOTOR);
} else {
OnFwd(OUT_A);
Off(OUT_C);// センサ1が反応(黒線から外れた)したとき、Aを進めCを止める
Off(OUT_C); // センサ1が反応(黒線から外れた)したとき、Aを進めCを止める
}
} else {
if(SENSOR_3 > THRESHOLD){
Off(OUT_A);
OnFwd(OUT_C);// センサ3が反応(黒線から外れた)したとき、Aを止めCを進める
OnFwd(OUT_C); // センサ3が反応(黒線から外れた)したとき、Aを止めCを進める
}else{
OnFwd(MOTOR);
Wait(20);
Off(MOTOR);// 2つの光センサが黒線上にあるとき2秒前進する
Off(MOTOR); // 2つの光センサが黒線上にあるとき2秒前進する
}
}
OnFwd(MOTOR);
until(SENSOR_2 == 1); // タッチセンサーが反応したら
OnRev(MOTOR);
Wait(30); // 3秒間後退
Off(MOTOR);
Wait(100); // 100秒間停止
}
}
***衝突時の対応 [#vd4c4ef4]
OnFwd(MOTOR);
until(SENSOR_2 == 1); // タッチセンサーが反応したら
OnRev(MOTOR);
Wait(30); // 3秒間後退
Off(MOTOR);
Wait(100); // 100秒間停止
いくつかのロボットをコース上で走らせるので、衝突時の対応をプログラムの最後の辺に組み込みました。衝突するとタッチセンサーが反応し、すぐに3秒間後退、10秒間停止して、また前進します。