課題3:懐中電灯に向かってブロックを投げるロボットの制作

以下の動きをするプログラムを作る。

その1、全方向から懐中電灯の方向を探しだし、懐中電灯に向かってブロックを投げる。(懐中電灯は動かさない。)

その2、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めるとブロックを投げる。

その3、懐中電灯をゆっくり動かしたとき懐中電灯に向かって進み、懐中電灯の動きを止めると50cmの距離まで近づいてブロックを投げる。

メンバー

今回は、小鉢と小次郎で制作します。

使用するロボットについて

<条件> 使用できるモータは2つまでとする。

全体像

↑ロボットの全体像

全体像その2

↑ロボットの全体像その2

ギア

↑ギアの部分

ギアのストッパー

↑ギアのストッパーの部分

プログラムについて

その1

#define THRESHOLD 65                 //閾値
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);   //センサー1を光センサーに定義する  
SetSensor(SENSOR_3,SENSOR_LIGHT);           //センサー3を光センサーに定義する
SetPower(OUT_A+OUT_C,7);              //AとCのモーターの出力を7にする
while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD)) {  //センサー1か3が受ける光が閾値より弱ければ実行                                 
OnFwd(OUT_C);     //時計回りに回転
Off(OUT_A);
}
Off(OUT_C); 
OnFwd(OUT_A); Wait(100);    //両方とも受ける光が閾値より強くなったらブロックを投げる
Off(OUT_A);
}

その2

#define THRESHOLD 65                //閾値
#define RUN_TIME 25    //RUN_TIMEを2、5秒に定義する
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);    //センサー1を光センサーに定義する
SetSensor(SENSOR_3,SENSOR_LIGHT);           //センサー3を光センサーに定義する    
SetPower(OUT_A+OUT_C,7);       //AとCのモーターの出力を7にする
ClearTimer(0);              //タイマーをクリアする
while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD) || (Timer(0) <= RUN_TIME)) {   //光が閾値より弱くタイマーが2、5秒以下ならば実行
if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) {  //センサー1と3が受ける光が閾値より強ければ前進
OnRev(OUT_C); Wait(15);
OnFwd(OUT_C); Wait(15);
}
if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) {  //センサー3が受ける光が暗くなったら左折
ClearTimer(0);    //タイマーをクリアする
OnRev(OUT_C);
Off(OUT_A); 
}
if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) {  //センサ−3が受ける光が暗くなったら右折
ClearTimer(0);    //タイマーをクリアする
OnFwd(OUT_C);
Off(OUT_A);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
}
if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)) {   //光がなければ時計回りに回転
ClearTimer(0);     //タイマーをクリアする
OnFwd(OUT_C);
Off(OUT_A); 
}
}
Off(OUT_C); 
OnRev(OUT_A); Wait(50);   //前進を2、5秒以上続けたらブロックを投げる
OnFwd(OUT_A); Wait(50);
Off(OUT_A);
}

その3

#define THRESHOLD 65                //閾値
#define RUN_TIME 25    //RUN_TIMEを2、5秒に定義する
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);    //センサー1を光センサーに定義する
SetSensor(SENSOR_3,SENSOR_LIGHT);           //センサー3を光センサーに定義する    
SetPower(OUT_A+OUT_C,7);       //AとCのモーターの出力を7にする
ClearTimer(0);              //タイマーをクリアする
while((SENSOR_1 < THRESHOLD) || (SENSOR_3 < THRESHOLD) || (Timer(0) <= RUN_TIME)) {   //光が閾値より弱くタイマーが2、5秒以下ならば実行
if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 > THRESHOLD)) {  //センサー1と3が受ける光が閾値より強ければ前進
OnRev(OUT_C); Wait(15);
OnFwd(OUT_C); Wait(15);
}
if ((SENSOR_1 > THRESHOLD) && (SENSOR_3 < THRESHOLD)) {  //センサー3が受ける光が暗くなったら左折
ClearTimer(0);    //タイマーをクリアする
OnRev(OUT_C);
Off(OUT_A); 
}
if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 > THRESHOLD)) {  //センサ−3が受ける光が暗くなったら右折
ClearTimer(0);    //タイマーをクリアする
OnFwd(OUT_C);
Off(OUT_A);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
}
if ((SENSOR_1 < THRESHOLD) && (SENSOR_3 < THRESHOLD)) {   //光がなければ時計回りに回転
ClearTimer(0);     //タイマーをクリアする
OnFwd(OUT_C);
Off(OUT_A); 
}
}
Off(OUT_C); 
if(SENSOR_2>LIGHT65&&SENSOR_3>LIGHT65)
{           //50センチ手前にきたら止まってホイールを投げる
Off(OUT_A);
OnFwd(OUT_C);
Wait(20);
Off(OUT_A+OUT_C); 
}

制作してみての感想

ものを投げる際に床にたたきつけるようになってしまい、遠くへ飛ばすためロボットを改良するのに苦労しました。 

コメントお願いします


課題1では相対的に最も明るい方向を探せるプログラムにしてください。I


添付ファイル: filerobo-left2.jpg 346件 [詳細] filegia-left.jpg 353件 [詳細] filestop-left.jpg 358件 [詳細] filerobo-left.jpg 437件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-03 (日) 21:40:09