#contents *課題2: 黒い線に沿って動くロボットを作成せよ[#h9fee753] 各チームで交差点が2つ以上のコースを作成し、そのコースを3周するロボットを作成する。 交差点のうちの1つには500㎖の空の紙パックを置き、次のような動作をするプログラムを作成せよ。 1、紙パックを迂回する、あるいは紙パックを元の位置に戻した後コースに戻って進む。&br; (交差点を通過後、紙パックが元の位置にあればよい。)&br; 2、紙パックを次の交差点まで運んでいき、その交差点に紙パックを残して更に黒い線に沿って進む。&br; 早さと正確さにも気をつけること。 *ロボットの概要[#z9f8aad6] *コースの紹介 [#iae0b335] #ref(course.jpg)&br; 交差点は3つにしました。&br; カーブはできるだけ急にならないようにし、曲がりやすいようにしました。 *プログラム [#s8715280] **迂回Ver. [#s874c7bf] #define THRESHOLD 40 //閾値の設定 #define turn_180 OnFwd(OUT_A);OnRev(OUT_C);Wait(130);Off(OUT_A+OUT_C);Wait(100); //180°回転の定義 task main (){ int i; i = 0; //変数の設定 SetSensor(SENSOR_1,SENSOR_LIGHT); //センサー1=光センサー SetSensor(SENSOR_2,SENSOR_TOUCH); //センサ−2=タッチセンサー SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ−3=光センサー SetPower(OUT_A+OUT_C,2); Wait(100); while (i < 18){ if(SENSOR_1 > THRESHOLD){ if(SENSOR_3 > THRESHOLD){ OnFwd(OUT_A+OUT_C); } else{ OnFwd(OUT_A); Off(OUT_C); } } else{ if(SENSOR_3 > THRESHOLD){ OnFwd(OUT_C); Off(OUT_A); } else{ Off(OUT_A+OUT_C); Wait(100); OnFwd(OUT_B); Wait(50); Off(OUT_A+OUT_C); Wait(100); OnFwd(OUT_A+OUT_C); Wait(50); turn_180; OnRev(OUT_B); Wait(50); turn_180; i = i+1; } } } if(SENSOR_2 == 1){ OnRev(OUT_A+OUT_C); Wait(100); Off(OUT_A+OUT_C); Wait(300); } if(i == 18){ Off(OUT_A+OUT_C); } } **運搬Ver. [#obcaa8c3] *反省、感想 [#cc226c18] *コメント [#hb8e1cd3] コメントよろしくお願いします。 #comment