☆右チーム☆(ブリトニー&かずま)
目次
// ライントレースのプログラム // // 作成者:かずま // 作成日:2005-11-18 #define THRESHOLD 45 // 閾値 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); // センサ端子1に接続されたセンサが // 光センサであると宣言 SetSensor(SENSOR_3, SENSOR_LIGHT); // センサ端子3に接続されたセンサが // 光センサであると宣言 SetPower(OUT_A,3); // 出力Aのパワーを3に設定 SetPower(OUT_C,3); // 出力Cのパワーを3に設定 while(true) { if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) // センサ1が黒線上かつセンサ3が黒線外のとき { OnFwd(OUT_C); // 出力Cのみ前進する Off(OUT_A); } if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) // センサ1が黒線外かつセンサ3が黒線上のとき { OnFwd(OUT_A); // 出力Aのみ前進する Off(OUT_C); } else // センサ1、センサ3がともに黒線上又は黒線外のとき { OnFwd(OUT_A+OUT_C); // 前進する } } }
・思ったより難しい...直角と鋭角のカーブがあやしいなぁ。ゆっくり動かせば何とかなるかと思って、パワーを捨てました。コースを太くした方が良いのかも(-_-;)
// ライントレースのプログラム // // 作成者:かずま // 作成日:2005-11-24 #define THRESHOLD 45 // 閾値 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); // センサ端子1に接続されたセンサが // 光センサであると宣言 SetSensor(SENSOR_3, SENSOR_LIGHT); // センサ端子3に接続されたセンサが // 光センサであると宣言 SetPower(OUT_A,3); // 出力Aのパワーを3に設定 SetPower(OUT_C,3); // 出力Cのパワーを3に設定 while(true) { if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) // センサ1が黒線上かつセンサ3が黒線外のとき { Off(OUT_A+OUT_C); OnFwd(OUT_C); // 左回転する OnRev(OUT_A); } if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) // センサ1が黒線外かつセンサ3が黒線上のとき { Off(OUT_A+OUT_C); OnFwd(OUT_A); // 右回転する OnRev(OUT_C); } else // センサ1、センサ3がともに黒線上又は黒線外のとき { Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); // 前進する } } }
・より鋭くカーブできるように改良!(さらに遅くなったけど…)なぜか左折が苦手、光センサーが原因かなぁ?
// ライントレースのプログラム // // 作成者:かずま // 作成日:2005-11-24 #define THRESHOLD 45 // 閾値 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); // センサ端子1に接続されたセンサが // 光センサであると宣言 SetSensor(SENSOR_3, SENSOR_LIGHT); // センサ端子3に接続されたセンサが // 光センサであると宣言 while(true) { if((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) // センサ1が黒線上かつセンサ3が黒線外のとき { Off(OUT_A+OUT_C); OnFwd(OUT_C); // 左回転する OnRev(OUT_A); } if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) // センサ1が黒線外かつセンサ3が黒線上のとき { Off(OUT_A+OUT_C); OnFwd(OUT_A); // 右回転する OnRev(OUT_C); } if((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) // センサ1、センサ3がともに黒線外のとき { Off(OUT_A+OUT_C); OnFwd(OUT_A+OUT_C); // 前進する } } }
・elseを無くしたらなぜか出来ました。SetPowerもあんまり意味ない気がしたんで排除。ちなみに、両方のセンサが黒線上のときのプログラムがないのはわざとです。
// ライントレースのプログラム // // 作成者:かずま // 作成日:2005-12-8 #define THRESHOLD 45 // 閾値 task main() { SetSensor(SENSOR_2, SENSOR_LIGHT); // センサ端子2に接続されたセンサが // 光センサであると宣言 while(true) { if(SENSOR_2 < THRESHOLD) //センサ2が黒線上のとき { Off(OUT_B); OnFwd(OUT_B); //モーターBを正回転 } if(SENSOR_2 > THRESHOLD) //センサ2が黒線外のとき { Off(OUT_B); OnRev (OUT_B); //モーター2を逆回転 } } }
シンプル・イズ・ベストですな。これでうまくいきます。
かわいらしいWCマークにしました♪
↓↓↓↓↓↓↓↓
線をちょっと太くしました
↓↓↓↓↓↓↓↓