モーター2つ
モーター2つのライントレースロボットのプログラムです。
#define BLACK 45 //黒い線 #define A 10 //微少時間 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); SetSensor(SENSOR_3, SENSOR_LIGHT); while(true){ if(SENSOR_1>BLACK && SENSOR_3>BLACK){ //2つのセンサが黒い線の上ではない時 OnFwd(OUT_A+OUT_C); Wait(A); } else if(SENSOR_1< BLACK){ //左側のセンサが黒い線を感知した時 while(SENSOR_1< BLACK){ //黒い線を感知している間 OnFwd(OUT_C); //半時計回り OnRev(OUT_A); Wait(A); } } else if(SENSOR_3< BLACK){ //右側のセンサが黒い線を感知した時 while(SENSOR_3< BLACK){ //黒い線を感知している間 OnFwd(OUT_A); //時計回り OnRev(OUT_C); Wait(A); } } } Float(OUT_A); //意味なし }
モーター1つ
モーター1つのライントレースロボットです。
#define A 40 //明るさの基準 #define B 40 //走る時間の基準 #define C 10 //トレース時間の基準1 #define D 10 //トレース時間の基準2 void run() //走る関数 { OnFwd(OUT_A); Wait(B); OnRev(OUT_A); Wait(B); } void trace(int x) //トレース関数 { repeat(D){ OnFwd(OUT_A); Wait(C); if(x < A) return; } repeat(D*2){ OnRev(OUT_A); Wait(C); if(x < A) return; } } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); while(true) //無限ループ { if(SENSOR_1 < A) //線の上なら { run(); } else //線の上でないなら { trace(SENSOR_1); } } Off(OUT_A+OUT_C); //意味なし }
モーター2つのロボットはすんなり行きましたが、1つのロボットはそうはいきませんでした。 初めは、どうすればモーター1つで左右に曲がることが出来るんだと悩みに悩みました。 他にもギアの数が多いとパワーが弱かったり等、色々な苦難を乗り越え、一応完成しました。 が、大したことない出来でしたね。ははは