[[2016a/Member]]
*はじめに [#h59445fa]
ラインを辿ってAからBへ移動するプログラムをつくった
#ref(2016a-mission2.png)
*ロボット [#m1077088]
ラインを読み取る光センサーを前側の中央に取り付けた。&br;
#ref(image(1).jpeg)
*結果 [#m84b4dfd]
なめらかに動かすまでには至らなかったが一応ゴールまでは到達した。&br;
交差点の識別は黒を認識した秒数の長さによって識別することにした。&br;
しかし最後の交差点は直進してしまい用紙からはみ出した時点で黒線を探し、コースへ&br;
戻るプログラムになってしまった。解決策として交差点で向きを修正するプログラムを試したが&br;
うまく行かなかった。
*定義 [#x80cf261]
#define BLACK 34&br;
#define WHITE 60&br;
#define LEFT OnFwd(OUT_B,50);OnRev(OUT_C,20); //左に曲がる&br;
#define RIGHT OnFwd(OUT_C,50);OnRev(OUT_B,20); //右に曲がる&br;
#define nMAX 300 //nMAXは0.3秒&br;
#define short_break Off(OUT_BC);Wait(1000) //1秒止まる&br;
#define STEP 1 &br;
*プログラム [#eded7027]
task main()
{
SetSensorLight(S2); //センサーライトを端子2にセット
int nOnline=0; // ライン上にある秒数
while(true){ //以下の条件で実行
while(true){ //以下の条件で実行
while(nOnline < nMAX){ //0.3秒以上ライン上にいるとき
if (SENSOR_2<BLACK) { //センサーの値がくろのとき
LEFT; //左に曲がる
} else //条件以外の時
if (SENSOR_2<WHITE) { //センサーの値が白の時
RIGHT; //右に曲がる
}
nOnline=0; //nOnline=0まで戻る
}
Wait(STEP);
}
short_break;
nOnline=0;
}
}
*感想 [#vbee88a2]
プログラムを簡単にするのが難しく、{}の中が少し長くなってしまった。&br;
ゴールするまではなんとかなったが、最後までジグザグ走行する状態からなめらかに走行する&br;
プログラムに改善することができなかった。&br;
しかし交差点の判別にはなめらかな動きをするプログラムを作ることができた。