- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006a/C3/課題3左]]
#define turn_right OnFwd(OUT_A);OnRev(OUT_C);
#define turn_left OnRev(OUT_A);OnFwd(OUT_C);
#define Stop_turning Off(OUT_A+OUT_C);
#define TURN_TIME 50
#define go_straight OnFwd(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);Wait(50);
sub serch_light()
{
ClearTimer(0);
while(FastTimer(0)<400){
if(SENSOR_2>=light_max){
light_max=SENSOR_2;
time_max=FastTimer(0);
}
}
Stop_turning;Wait(50);
turn_left;
Wait(TURN_TIME-time_max);
Stop_turning;
go_straight;
}
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int light_max=30,time_max=0;
while(true){
OnFwd(OUT_C);OnRev(OUT_A);Wait(25);Off(OUT_A+OUT_C);Wait(10);
turn_right;
ClearTimer(0);
while(FastTimer(0)<TURN_TIME){
if(SENSOR_2>=light_max){
light_max=SENSOR_2;
time_max=FastTimer(0);
}
}
Stop_turning;Wait(50);
turn_left;
Wait(TURN_TIME-time_max);
Stop_turning;
go_straight;
if(SENSOR_2<light_max){
start play_music;
search_light();
stop play_music;
}
light_max=30;
time_max=0;
}
}
#define turn_right OnFwd(OUT_A);OnRev(OUT_C);
#define turn_left OnRev(OUT_A);OnFwd(OUT_C);
#define Stop_turning Off(OUT_A+OUT_C);
#define TURN_TIME 50
#define go_straight OnFwd(OUT_A+OUT_C);Wait(30);Off(OUT_A+OUT_C);Wait(50);
task main()
{
SetSensor(SENSOR_2,SENSOR_LIGHT);
int light_max=0,time_max=0;
while(true){
turn_left;Wait(25);Off(OUT_A+OUT_C);Wait(10);
turn_right;
ClearTimer(0);
while(FastTimer(0)<TURN_TIME){
if(SENSOR_2>=light_max){
light_max=SENSOR_2;
time_max=FastTimer(0);
}
}
if(SENSOR_2<light_max){
ClearTimer(0);
while(FastTimer(0)<400){
if(SENSOR_2>=light_max){
light_max=SENSOR_2;
time_max=FastTimer(0);
}
}
}
Stop_turning;Wait(50);
turn_left;
Wait(TURN_TIME-time_max);
Stop_turning;
go_straight;
light_max=30;
time_max=0;
}
}
#define turn_right OnFwd(OUT_A);OnRev(OUT_C);
#define turn_left OnRev(OUT_A);OnFwd(OUT_C);
#define go_straight OnFwd(OUT_A+OUT_C);
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_3,SENSOR_LIGHT);
while(true){
if(SENSOR_1>=30&&SENSOR_3>=30){
go_straight;
}
if(SENSOR_1<30&&SENSOR_3>=30){
turn_right;
}
if(SENSOR_1>=30&&SENSOR_3<30){
turn_left;
}
if(SENSOR_1<30&&SENSOR_3<30){
turn_right;
}
}
}