光センサーを駆使して、ラインをトレースするロボットを製作せよ。1週半が目標である。
Dragnov
ロボット自体はそこまで珍しい出来ではない
#define kyoukai 45 #define go OnFwd(OUT_AC); //前進 #define L OnFwd(OUT_C);Off(OUT_A); //左 #define R OnFwd(OUT_A);Off(OUT_C); //右 task main() { SetPower(OUT_A,0); SetPower(OUT_C,0); go; Wait(40); R; Wait(90); Off(OUT_AC);
SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); int cross = 0; //両方黒になった回数をカウントする変数
while(cross!=33) //黒黒が20回来たら止める { if(SENSOR_1 < kyoukai) {L;} //左側のセンサーが黒になったら左に曲がる if(SENSOR_3 < kyoukai) {R;} //右側のセンサーが黒になったら右に曲がる if(SENSOR_1 < kyoukai && SENSOR_3 < kyoukai) {L;cross++;} //両方黒になったら cross=cross+1 直進 if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {R;} //両方白になったら直進 }
Off(OUT_AC); PlaySound(SOUND_UP); go; Wait(70);
while(cross!=46) //黒黒が20回来たら止める { if(SENSOR_1 < kyoukai) {L;} //左側のセンサーが黒になったら左に曲がる if(SENSOR_3 < kyoukai) {R;} //右側のセンサーが黒になったら右に曲がる if(SENSOR_1 < kyoukai && SENSOR_3 < kyoukai) {L;cross++;} //両方黒になったらcross=cross+1 直進 if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {R;} //両方白になったら直進 }
Off(OUT_AC); PlaySound(SOUND_UP); go; Wait(50);
while(cross!=60) //黒黒が20回来たら止める { if(SENSOR_1 < kyoukai) {L;} //左側のセンサーが黒になったら左に曲がる if(SENSOR_3 < kyoukai) {R;} //右側のセンサーが黒になったら右に曲がる if(SENSOR_1 < kyoukai && SENSOR_3 < kyoukai) {L;cross++;} //両方黒になったらcross=cross+1 直進 if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {R;} //両方白になったら直進 }
Off(OUT_AC); PlaySound(SOUND_UP); SetPower(OUT_A,3); SetPower(OUT_C,3);
while(cross!=59) //黒黒が20回来たら止める { if(SENSOR_1 < kyoukai) {L;} //左側のセンサーが黒になったら左に曲がる if(SENSOR_3 < kyoukai) {R;} //右側のセンサーが黒になったら右に曲がる if(SENSOR_1 < kyoukai && SENSOR_3 < kyoukai) {go;cross++;} //両方黒になったらcross=cross+1 直進 if(SENSOR_1 > kyoukai && SENSOR_3 > kyoukai) {go;} //両方白になったら直進 }
}
途中で電池を換えたためにいろいろと変更する羽目になったが、何とかなってよかった。