今回のロボットは“全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。”ことと“懐中電灯をゆっくり動かしたとき懐中電灯に向かって進む。”ことを目的としたものである。また、今回はモーター,タッチセンサー,光センサーをそれぞれ二つまでしか使用できない。そのため、一つのモーターでロボットを左右に回転させることが可能な“ディファレンシャルギア”を用いた。
先にも述べたように、一つのモーターでロボットを時計回り又は反時計回りに回転させることができるものである。よって、今回の目的の一つである“全方向から懐中電灯の方向を探しだし、懐中電灯に向けてブロックを投げる。”という行為を行うことができるのである。
ディファレンシャル・ギアの内部に三つのギアを組み込み、その中の二つのギアにシャフトを接続する。すると、片方のシャフトが回転したときに接続されているギアも同時に回転し、シャフトがつけられていないギアがその回転を継いでもう片方のシャフトが接続されているギアにつなげ、最初に回転していない方のシャフトがもう片方のシャフトとは逆の回転をする。
二つの光センサーの間に衝立代わりとして黒い棒を置いて各々を独立させることにより、反応しやすいようにした。
今回のロボットで使用可能なモーターは二つであり、一つは移動用に、もう一つは投擲用に使用している。投擲方法はいたってシンプルで、モーターに投擲台をつけ、モーターが回転すれば投擲が可能になるようにした。
#define THRESHOLD 70 //光の明るさを定義 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); //光センサーを定義 while(true) { if(SENSOR_1 < THRESHOLD) //定義した光よりも暗い場合 { OnFwd(OUT_A); //時計周りに回転する } else //定義した光よりも明るい場合 { Off(OUT_A); //タイヤの動きを止める OnFwd(OUT_C); //ブロックを投げる Wait(5); Off(OUT_C); } } }
#define THRESHOLD 70 //光の明るさを定義 task main() { SetSensor(SENSOR_1, SENSOR_LIGHT); //光センサーを定義 SetSensor(SENSOR_3, SENSOR_LIGHT); while(true) { if(SENSOR_1< THRESHOLD) //定義した光よりも光センサー1が暗い場合 { if(SENSOR_3< THRESHOLD) //定義した光よりも光センサー3が暗い場合 { OnFwd(OUT_A); //時計回りに回転する } else //定義した光よりも光センサー3が明るい場合 { OnRev(OUT_A); //反時計回りに回転する } } if(SENSOR_1> THRESHOLD) //定義した光よりも光センサー1が明るい場合 { if(SENSOR_3< THRESHOLD) //定義した光よりも光センサー3が暗い場合 { OnFwd(OUT_A); //時計回りに回転する } if(SENSOR_3> THRESHOLD) //定義した光よりも光センサー3が明るい場合 { OnRev(OUT_A); //反時計回りに回転する } } } }
ディファレンシャルギアを用いると、モーターをどのように回してもロボットは後退ができなくなる。そのため、モーターの正回転と逆回転を繰り返せば、ロボットは時計回りと反時計回りの動きを繰り返すので自ずと前進する。
コメントをお願いします。