task main()
{ OnFwd(OUT_A); OnFwd(OUT_C); Wait(150) ; OnFwd(OUT_A+OUT_C); Wait(500); OnRev(OUT_C); OnFwd(OUT_A); Wait(300); OnFwd(OUT_A+OUT_C); Wait(300); Float(OUT_A+OUT_C); }
テキトーに作ってみたからどのように動くのかわからない…
task main() { OnFwd(OUT_B); Wait(40); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(130); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(10); Off(OUT_B); OnFwd(OUT_A); Wait(100); OnRev(OUT_C); Wait(100); Off(OUT_A+OUT_C); OnRev(OUT_A+OUT_C); Wait(42); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(40); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(30); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(10); Off(OUT_B); OnFwd(OUT_C); Wait(30); Off(OUT_C); OnFwd(OUT_A+OUT_C); Wait(110); Off(OUT_A+OUT_C); OnFwd(OUT_A); Wait(80); OnRev(OUT_C); Wait(80); Off(OUT_A+OUT_C); OnRev(OUT_A+OUT_C); Wait(10); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(40); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(35); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(10); Off(OUT_B); OnFwd(OUT_A); Wait(210); Off(OUT_A); OnRev(OUT_A+OUT_C); Wait(70); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(40); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(70); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(10); Off(OUT_B); OnRev(OUT_A+OUT_C); Wait(140); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(40); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(50); Off(OUT_A+OUT_C); OnRev(OUT_B); Wait(10); Off(OUT_B); OnFwd(OUT_C); Wait(140); Off(OUT_C); OnRev(OUT_A+OUT_C); Wait(80); Off(OUT_A+OUT_C); OnFwd(OUT_B); Wait(40); Off(OUT_B); OnFwd(OUT_A+OUT_C); Wait(100); Float(OUT_A+OUT_C); OnRev(OUT_B); Wait(10); Off(OUT_B); }
#define turn_RIGHT ;OnFwd(OUT_A);OnRev(OUT_C);Wait(150); task main () { SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3,SENSOR_LIGHT); SetSensor(SENSOR_2,SENSOR_TOUCH); while (true) { OnFwd(OUT_A+OUT_C); if (SENSOR_1 < 45) { OnFwd(OUT_C); OnRev(OUT_A); until (SENSOR_1>45);} if(SENSOR_3<40) { OnFwd(OUT_A); OnRev(OUT_C); until(SENSOR_3>45); } if(SENSOR_2==1) { //タッチセンサーが反応した場合 OnRev(OUT_A+OUT_C); //0.8秒後退 Wait(80); turn_RIGHT //逆向きになるまで回転 } } }
#define THRESHOLD 40
task main () { SetSensor(SENSOR_1, SENSOR_LIGHT);/センサー1をライトセンサーと宣言 SetSensor(SENSOR_2, SENSOR_LIGHT);/センサー2をライトセンサーと宣言 SetSensor(SENSOR_3, SENSOR_TOUCH);/センサー3をタッチセンサーと宣言 OnFwd(OUT_A+OUT_C); while (true) { if (SENSOR_3 == 1) { OnRev(OUT_A+OUT_C) ; Wait(50);0.5秒後退する Off(OUT_A+OUT_C); OnRev(OUT_C); Wait(150);/モーターCを1.5秒逆回転 OnFwd(OUT_A+OUT_C); Wait(150);/1.5秒進む Off(OUT_A); Wait(150);1.5秒左回転させる OnFwd(OUT_A); Wait(150); Off(OUT_A); Wait(150); OnFwd(OUT_A);/モーターAを動かし元のコースに戻る } else { if (SENSOR_1 < 40) { Off(OUT_A); OnFwd(OUT_C);センサー1に黒線が入ると左回転 } if (SENSOR_2 < 40) { OnFwd(OUT_A); Off(OUT_C);センサー2に黒線が入ると右回転 } } } }
#define ROOP 100 //ロボが一周する時間 #define LEFT_X OnFwd(OUT_A);OnRev(OUT_C);Wait(1);Off(OUT_A+OUT_C);//左回転 #define RIGHT_X OnFwd(OUT_C);OnRev(OUT_A);Wait(1);Off(OUT_A+OUT_C);//右回転
task main() { SetSensor(SENSOR_2,SENSOR_LIGHT); int light_max = 0; //「見つけた明るさ」の最大値 int i = 0; for(i=0; i<=ROOP; i++){ LEFT_X; //まず左に一周しつつ if(SENSOR_2>light_max){ //このlight_maxを light_max = SENSOR_2; //見つけた中で、一番明るい } //明るさの値に塗り変える。 } Off(OUT_A+OUT_C); //とりあえず一周したら Wait(50); //休憩してみる repeat(10){ //上で見つけた明るさを元に for(i=0; i<=ROOP; i++){ //右回転で探しては前進、探しては前進 if(light_max-10>=SENSOR_2){ RIGHT_X; } else{ Off(OUT_A+OUT_C);Wait(10); //最も明るい所よりも若干、暗くても進ませます。 OnFwd(OUT_A+OUT_C); Wait(30); Float(OUT_A+OUT_C); Wait(50); } } } }