コースは走りやすく、単純なコースにしました。
十字路×2
直角カーブ×1
ヘアピンカーブ×1
以上!!非常にシンプルなコースです。
今回は黒線をなぞることが課題だったので、できるだけコンパクトに小回りの利く形を意識しました。
それで出来上がったのが写真のロボです。
しかしセンサーの位置が非常に悪く、トレースすべき黒線の発見がかなり遅れるといったなんとも残念な結果になってしまいました。
このあと何回もセンサーの位置を調整し、写真の位置になりました。
こうすることで黒線の発見が早くなり、はみ出してもすぐに戻ることに成功しました。
脱出用の進路の取り方です。プログラムでオフを入れているのはいったん動作を停止させ、そのままライントレースを続けさせないためです。(オフを入れてないとたまにとまってしまう)
出来上がった機体の全体像です。
機体構成がシンプルすぎたので、大量にパーツが余ってしまいました…。
とりあえず余ったパーツで動物?っぽい頭取り付けました。
もちろん顎は動きます。目も光ります。
小さいころレゴで遊んでいたので、遊び心が刺激されただけで特に目が光るだけで火を噴いたりはしません。
#define THRESHOLD 45
#define THRESHOLD_1 51
#define RUN_TIME_1 50
#define RUN_TIME_2 100
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT); SetSensorLight(IN_1); long time1,timeA; time1 = CurrentTick(); //time1スタート while(timeA < 63000) //time1が63秒以内ならばwhile内を繰り返し { timeA = CurrentTick() - time1; if(SENSOR_1 < THRESHOLD) //黒線の上 { OnFwd(OUT_C,50); Off(OUT_A); } if(SENSOR_1 > THRESHOLD) //白の上 { OnFwd(OUT_A,50); Off(OUT_C); } }
long time2,timeB; time2 = CurrentTick(); //time2スタート
while(1200 >= timeB) //timeBが1.2秒以内ならばwhile内を繰り返し { timeB = CurrentTick() - time2; Off(OUT_AC); Wait(2000); OnFwd(OUT_C,80); Off(OUT_A); Wait(0500); } long time3,timeC; time3 = CurrentTick(); //time3スタート
while(10000 >= timeC) //timeCが10秒以内ならばwhile内を繰り返し { timeC = CurrentTick() - time3; if(SENSOR_1 < THRESHOLD) //黒線の上 { OnFwd(OUT_A,50); Off(OUT_C); } if(SENSOR_1 < THRESHOLD) //白の上 { OnFwd(OUT_C,50); Off(OUT_A); } } Off(OUT_AC);
}