目次
#define THRESHOLD 40 //光の強さが40 task main() { SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサー1 SetSensor(SENSOR_3,SENSOR_LIGHT); //タッチセンサー2 SetSensor(SENSOR_2,SENSOR_TOUCH); //光センサー3 while (true) { if (SENSOR_2 == 0) //タッチセンサー2が反応していないとき { if (((SENSOR_1 < THRESHOLD ) && (SENSOR_3 < THRESHOLD)) //光センサー1が線上かつ光センサー3も線上のとき。 { Off(OUT_A+OUT_C); //優先道路手前での一時停止 Wait(200); OnFwd(OUT_A+OUT_C); //その後直進する Wait(60); } if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD))) //光センサー1が線上でないかつ光センサー3が線上でないとき。 { OnFwd(OUT_A+OUT_C); //前進する。 } if((SENSOR_1 < THRESHOLD ) && (SENSOR_3 > THRESHOLD)) //光センサー1が線上でなくかつ光センサ−3が線上のとき。 { OnFwd(OUT_C); Off(OUT_A); }//左方向に回転して、線をまたぐように修正する。 if((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) //光センサー1が線上でなくかつ光センサー3が線上のとき。 { OnFwd(OUT_A); Off(OUT_C); }//右方向に回転して、線をまたぐようにに修正する。 } else //タッチセンサー2が反応したとき。 { Off(OUT_A+OUT_C); Wait(500); OnFwd(OUT_A+OUT_C); }//50秒間停止する。 } }
光センサーを2個使うという点でロボットの構造に苦労しました。
今回はゴムを利用せずに、小さいブロックを2個使用してバンパーを固定し、肝心の光センサーは2個並べて下につけました。
しかし!!このシンプルな構造にたどり着くまでかなりの時間を要したのです... 特にバンパーの設置!!
前段階でバンパーをつけた部分(写真参照)に光センサーをつけてしまったため、バンパーの設置が不可能になるという非常事態に対し、必死で考えました。
1棒を用いてバンパーを刺すような状態にしようと試みましたが黄色の部分に刺さらず断念
2バンパーのブロックの穴と下に置いた長めのブロックの穴の位置が合わなかったので、四角のブロックを斜めに設置しよう(ダイヤの向き)と試み、どうにかブロックを多用して設置したが意味なし。
3ダメもとで長めのブロックの上に小さいブロックをつける→成功!無事に固定され、小さいブロックを利用したので軽量になりました。
2個の光センサーを並べてつけることで、両方のセンサーが黒い線の上にあるときにだけ進むようにして、片方が線上から離れると修正するプログラムを作りました。
また、何かに衝突してタッチセンサーが作動すると、数秒間静止してまた再び動くように作りました。
コースの交差する場所では直進するように設定し、先の線を探させるプログラムを作りました。
「if」と「&&」と「||」をうまく利用することで、いろんな場合に対応できるプログラムができました。
今回はプログラミングが非常に上手くいったため、2回目にしてきちんと黒い線に沿って動いていました。 (1回目は私の書いた図が下手だったために変な方向に暴走)
これが図です。
RとLとで協力して考えました。
直線部分とカーブの部分を利用しようと思い、考えたのがこの不思議な図です。(分かる人にはわかるかもしれません…★)
より良いものにするためにコメントをお願いします(>M<)