2006a/B4

課題3:光を追いかけるロボット

懐中電灯の光を追いかけて進むロボットを作って、さらに以下の中から2種類以上のプログラムを作成せよ。

  1. 光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す
  2. 光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探す
  3. 光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す
  4. 上記のいずれかに『光源に近づき過ぎると停止する』という機能を追加する

プログラム

光を追いかけるプログラム(1)

製作者//Masa
製作日//2006/7/6
製作時間//10時間
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1は光センサー
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3は光センサー

while(true){ //条件が正しい場合は無限に実行する
if(SENSOR_1 >40 && SENSOR_3<40)//センサー1の値が40以上でセンサー3の値が40以下のとき
}
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_C);
Off(OUT_A);//センサー1の方に大きな反応があるということは ロボットの左側に光源があるという事なので
左に回転して光源を探す
}
if (SENSOR_3 >40 && SENSOR_1<40)//センサー3の値が40以上でセンサー1の値が40以下のとき
{
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A);
Off(OUT_C);//右側に反応がある場合は右に回転して光源を探す
}

if(SENSOR_1<50 && SENSOR_3<50)//センサー1と3の値が両方50以下のとき
{
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A);
OnRev(OUT_C);//光を見失ったという事になるので回転して光源を探す
}

if(SENSOR_1>40 && SENSOR_3>40)//センサー1と3の値が両方40以上のとき
{
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A+OUT_C);//常に光に向いている事になるので光源へ向かって直進
}
}
 }

No.1:1+a

製作者//基本プログラム→Masa
        音楽プログラム→Chosan //曲名:チューリップ

#define Do  523//ドの音を出す
#define Re  587//レの音を出す
#define Mi  659//ミの音を出す
#define So  784//ソの音を出す
task play_music()//音楽を流すためのプログラムです
{
      while(true)//条件が正しいときは無限に実行する
      {
           PlayTone(Do,15); Wait(20);//さ  
           PlayTone(Re,15); Wait(20);//い  
           PlayTone(Mi,25); Wait(30);//た 
          
           PlayTone(Do,15); Wait(20);//さ
           PlayTone(Re,15); Wait(20);//い
           PlayTone(Mi,25); Wait(30);//た
          
           PlayTone(So,15); Wait(20);//ちゅー
           PlayTone(Mi,15); Wait(20);//りっ
           PlayTone(Re,15); Wait(20);//ぷ
           PlayTone(Do,15); Wait(20);//の
           PlayTone(Re,15); Wait(20);//は
           PlayTone(Mi,15); Wait(20);//な
           PlayTone(Re,25); Wait(30);//が
       }
}

感度を上げるために光センサーの値を10ずつ増やしました

task main()//光を追跡するプログラムの実行
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1は光センサー
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3は光センサー
start play_music;//音楽開始
while(true)//条件が正しい場合は無限に実行する
{

if(SENSOR_1 >50 && SENSOR_3<50)//センサー1の値が50以上でセンサー3の値が50以下のとき
{stop play_music;//音楽を止める
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_C);
Off(OUT_A);//左に回転して光源を探す
}

if(SENSOR_1<60 && SENSOR_3<60)//センサー1と3の値が両方60以下のとき
{
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A);
OnRev(OUT_C);//回転して光源を探す
}

if (SENSOR_3 >50 && SENSOR_1<50)//センサー3の値が50以上でセンサー1の値が50以下のとき
{stop play_music;//音楽を止める
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A);
Off(OUT_C);//右に回転して光源を探す
}

if(SENSOR_1>50 && SENSOR_3>50)//センサー1と3の値が両方50以上のとき
{stop play_music;//音楽を止める
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A+OUT_C);//光源へ向かって直進
}
 }}

No.2:1+a+d

製作者//No.1と同じ 
//別に区切ってある所のみ追加
#define Do  523//ドの音を出す
#define Re  587//レの音を出す
#define Mi  659//ミの音を出す
#define So  784//ソの音を出す
task play_music()//音楽を流すためのプログラムです
{
      while(true)//条件が正しい場合は無限に実行する
      {
           PlayTone(Do,15); Wait(20);//さ  
           PlayTone(Re,15); Wait(20);//い  
           PlayTone(Mi,25); Wait(30);//た  
          
           PlayTone(Do,15); Wait(20);//さ
           PlayTone(Re,15); Wait(20);//い
           PlayTone(Mi,25); Wait(30);//た
           
           PlayTone(So,15); Wait(20);//ちゅ-
           PlayTone(Mi,15); Wait(20);//りっ
           PlayTone(Re,15); Wait(20);//ぷ
           PlayTone(Do,15); Wait(20);//の
           PlayTone(Re,15); Wait(20);//は
           PlayTone(Mi,15); Wait(20);//な
           PlayTone(Re,25); Wait(30);//が
       }
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);//センサー1は光センサー
SetSensor(SENSOR_3,SENSOR_LIGHT);//センサー3は光センサー
start play_music;//音楽開始
while(true)//条件が正しいときは無限に実行する
{

if(SENSOR_1 >50 && SENSOR_3<50)//センサー1の値が50以上でセンサー3の値が50以下のとき
{stop play_music;//音楽を止める
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_C);
Off(OUT_A);//左に回転して光源を探す
}

if(SENSOR_1<60 && SENSOR_3<60)//センサー1と3の値が両方60以下のとき
{
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A);
OnRev(OUT_C);//回転して光源を探す
}

if (SENSOR_3 >50 && SENSOR_1<50)//センサー3の値が50以上でセンサー1の値が50以下のとき
{stop play_music;//音楽を止める
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A);
Off(OUT_C);//右に回転して光源を探す
}

if(SENSOR_1>50 && SENSOR_3>50)//センサー1と3の値が両方50以上のとき
{stop play_music;//音楽を止める
Off(OUT_A+OUT_C);//一度動きを止めて
OnFwd(OUT_A+OUT_C);//光源へ向かって直進
}
if(SENSOR_1>65&&SENSOR_3>65)//両方のセンサーの値が65以上のとき
{stop play_music;//音楽をとめる
Off(OUT_A+OUT_C);//止まる
}
}}

苦労した点

工夫した点

感想

コメントをどうぞ



添付ファイル: filerobo1.bmp 141件 [詳細] fileNEC_0091.JPG 267件 [詳細]

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