課題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); 
}

制作してみての感想

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

コメントお願いします

  • モノを投げる際、ホースなどの多少弾力性のある部品を使うことで遠くまで飛ばせるようになると思います。 -- 松本 2008-07-31 (木) 08:22:38

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


添付ファイル: filerobo-left2.jpg 266件 [詳細] filegia-left.jpg 269件 [詳細] filestop-left.jpg 267件 [詳細] filerobo-left.jpg 338件 [詳細]

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