1.全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。懐中電灯は動かさない。
2.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。
3.懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めればブロックを投げる。
わかぐりーん/ろしあんぶるー
この部分が重要で、1つのモーターで左右のタイヤを複雑に回転させます。(左のタイヤだけで回転させるか右のタイヤだけで回転させるか)しかし、モーターの都合上、タイヤの位置がずれてしまいました。
このようにアームを回転させてブロックを投げます。
#define THRESHOLD 60 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT);sensor1 光センサであると宣言 SetSensor(SENSOR_3,SENSOR_LIGHT);sensor3 光センサであると宣言 while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD)){ OnFwd(OUT_A); Off(OUT_C);} Off(OUT_A); OnRev(OUT_C); Wait(20); Off(OUT_C);}
#define TURN_TIME 20 //動く時間を設定 #define THRESHOLD 40 //閾値の設定 sub turn_right() //右回りに動く時間を定義 { OnFwd(OUT_A); Wait(TURN_TIME); Off(OUT_A); } sub turn_left() //左回りに動く時間を定義 { OnRev(OUT_A); Wait(TURN_TIME); Off(OUT_A); } task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //センサ1を光センサに SetSensor(SENSOR_3,SENSOR_LIGHT); //センサ3を光センサに while (true) { if ((SENSOR_3 > THRESHOLD) && (SENSOR_1 > THRESHOLD)) //センサの1と3が閾値を超えたら左に { turn_left(); } if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) //センサ1は閾値を超えず、センサ3が閾値を越えた場合、右に { turn_right(); } if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) //センサ1が閾値を超え、センサ3が閾値を超えない場合、左に { turn_left(); } if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)) センサの1と3がともに閾値を超えない場合、右に回って光を探す { turn_right(); } } Off(OUT_A); }
#define THRESHOLD 40 task main() { StSensor(SENSOR_1,SENSOR_LIGHT);//センサー1を光センサーと定義 SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3を光センサーと定義
while(true) { if ( (SENSOR_1 > 50) || (SENSOR_3 > 50)) //センサ−1とセンサ−3の感じ取る光の強さが50より大きいとき、ロボットを止めてブロックを投げる。 { Float(OUT_A); OnFwd(OUT_C);Wait(35); Off(OUT_C); }else{ if ((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD)) //センサ−1とセンサ−3がいずれも感じる光の強さが40よりも小さいとき右に曲がる。 { OnFwd(OUT_A);Wait(5); } if((SENSOR_1 <THRESHOLD) || (SENSOR_3 >THRESHOLD)) //センサー1が感じる光の強さが40より小さく、センサ−3が40より大きいとき左に曲がる。 { OnRev(OUT_A);Wait(30); } if((SENSOR_1 > THRESHOLD ) || (SENSOR_3 <THRESHOLD)) //センサ−1が感じる光の強さが40より大きく、センサ−3が40より小さいとき右に曲がる。 { OnFwd(OUT_A);Wait(5); } } } }
・top secretにあった形でロボを作っていたら、一方方向にしか回れない事が分かったため、 それを両方に回れるようにすることに苦労した。
・ブロックを投げるときにモーターが勢いよく回りすぎるために、アームが激しくロボにぶつかり、その衝撃でアームを回転させるモーターが外れる問題が起こったが、留め具をつけることによって解決した。
・ギアとブロックの穴の数がうまく合わない都合上、ギアを多少横にずらしてしまった。そのためタイヤの位置を左右ずらすしか方法が無く、安定性を失ってしまった。また、左右の回転に大きく影響がでてしまった。 右回転はスムーズに回ることができて良かったのだが、左回転がスムーズに回らなくなってしまった。
・このようなプログラムを作成するのは初めてだったので、ifやtrueなど入力条件の方法を理解し、プログラミングするのに手こずってしまい、なかなか完成しなかったが、最終的に3つのプログラムができて良かった。
・今までやってきたことを生かして、ロボコンを頑張ります!!
コメントをどうぞ