[[2006a/A3/試作品]] [[ロボティクス入門ゼミ]] #contents *5/12 の授業 [#hb5ff3d7] **初めてのプログラム [#h74a8186] 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); } テキトーに作ってみたからどのように動くのかわからない… *5/19の授業 [#sc4c18b4] *課題1 [#g90df32a] **「水」を書くプログラム [#y4a36eeb] 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); } *6月16日 [#ue4954f7] **ライントレースしながらほかのロボにぶつかって反転するプログラム [#lf7ab55b] #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 //逆向きになるまで回転 } } } *6月23日 [#q36d5a3c] **ライントレースしながらほかのロボにぶつかるとよけるプログラム [#p7644a93] #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に黒線が入ると右回転 } } } } **光を追いかけるプログラム [#kaa26561] #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); } } } }