- 追加された行はこの色です。
- 削除された行はこの色です。
[[2010b]]
#contents
*課題の内容 [#m26ee999]
-交差点 2箇所以上
-直角コーナー 左右1箇所以上
-近道を点線 2箇所以上
-スタートは横5cmの目印
-線の幅 15−25mm
-2周 ゴールはスタート地点の30cm手前
*メンバー [#x00aca54]
-植田みるく
-仁野陽日
*製作したロボット [#x5ef946e]
*プログラム [#xc2e718b]
**みるくのプログラム [#ef083d2a]
**仁野のプログラム [#k80c27c9]
#define START OnRev(OUT_A+OUT_C); // 前進
#define BACK OnFwd(OUT_A+OUT_C); // 後退
#define STOP Off(OUT_A+OUT_C); // 停止
#define TURN_R OnFwd(OUT_C);OnRev(OUT_A); // 右折
#define TURN_L OnFwd(OUT_A);OnRev(OUT_C); // 左折
#define L1 39 // 閾値を39と定義
task main()
{
SetSensor(SENSOR_1, SENSOR_LIGHT); // センサー1を光センサーと設定
SetSensor(SENSOR_2, SENSOR_ROTATION); // センサー2を回転センサーと設定
SetSensor(SENSOR_3, SENSOR_LIGHT); // センサー3を光センサーと設定
int round=0; // roundを定数とする
while (round <2) // roundが2以下の時
{
int cross=0; // crossを定数とする
while (cross < 2) // 近道の入口までは
{if (SENSOR_1 > L1) // 1が白のときに
{if (SENSOR_3 > L1) {START;} // 3も白のときは直進
else {TURN_R;} // 3が黒のときは右折
}
else { // 1が黒のときに
if (SENSOR_3 > L1) {TURN_L;} // 3が白のときは左折
else {STOP;Wait(10); // 3が黒のときは一度停止し
START;Wait(10); // 線を越えるまで前進
PlaySound(SOUND_CLICK); // 1度音を鳴らす
cross++; // crossに1を足す
}
}
}
while (cross < 4) //近道を通るときは
{if (SENSOR_1 > L1) // 1が白のときに
{if (SENSOR_3 > L1) {START;} // 3も白のときは直進
else {TURN_R;} // 3が黒のときは右折
}
else { // 1が黒のときに
if (SENSOR_3 > L1) {TURN_L;} // 3が白のときは左折
else {STOP;Wait(10); // 3が黒のときは一度停止し
TURN_L;Wait(30); // 0.3秒左折し
START;Wait(10); // 線を越えるまで前進
PlaySound(SOUND_DOUBLE_BEEP); // 2回音を鳴らす
cross++; // crossに1を足す
}
}
}
while (cross < 6) //cross < 2 の時と同じ
{if (SENSOR_1 > L1)
{if (SENSOR_3 > L1) {START;}
else {TURN_R;}
}
else {if (SENSOR_3 > L1) {TURN_L;}
else {STOP;Wait(10);
START;Wait(10);
PlaySound(SOUND_CLICK);
cross++;
}
}
}
while (cross < 8) //cross < 4 の時と同じ
{if (SENSOR_1 > L1)
{if (SENSOR_3 > L1) {START;}
else {TURN_R;}
}
else {if (SENSOR_3 > L1) {TURN_L;}
else {STOP;Wait(10);
TURN_L;Wait(30);
START;Wait(10);
PlaySound(SOUND_DOUBLE_BEEP);
cross++;
}
}
}
while (cross < 9) //cross < 2 の時と同じ
{if (SENSOR_1 > L1)
{if (SENSOR_3 > L1) {START;}
else {TURN_R;}
}
else {if (SENSOR_3 > L1) {TURN_L;}
else {STOP;Wait(10);
START;Wait(10);
PlaySound(SOUND_CLICK);
cross++;
round++; //roundに1を足す
}
}
}
}
START;Wait(80); //スタートラインまで直進し
STOP; //停止
}
*反省・感想 [#j919c3bb]
***みるく [#n9d1078e]
***仁野 [#f8ed645e]
*コメント [#b8b11ec4]
#comment