◇目次◇

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

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

1. 光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す

2. 光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探す

3. 光源を見失っていないときにはある曲を演奏し、見失った時には別の曲警を演奏しながら光源を探す

4. 上記のいずれかに『光源に近づき過ぎると停止する』という機能を追加する

ただし支給されているモータ、光センサ、タッチセンサはいくつ使ってもよい。

(期限:7月6日)〜2006a/練習問題より抜粋〜

NQC入門/6. サウンド機能を使う

完成までの過程

作成者:ヨコチン/トシ/J/マサ
作成日時:7/5,7/6

光を追うロボット

光を追うロボットを作ってみる

19.0KB,曲鳴らすぜぃ♪←→16.7KB,音楽ラララ♪

プログラミング作成者:ヨコチン/トシ/J/マサ
#define go_straight OnFwd(OUT_A+OUT_C);       //直進
#define turn_right OnFwd(OUT_A);OnRev(OUT_C); //右旋回
#define turn_left OnFwd(OUT_C);OnRev(OUT_A);  //左旋回
#define minus 15                              //マイナス

int max;   //maxを定義
int time;  //timeを定義

task main()
{
    SetSensor(SENSOR_2,SENSOR_LIGHT);   //センサー2:光センサー

    max=SENSOR_2;                       //センサー2をmaxに指定
    time=Timer(0);                      //timeをタイマー0に指定
    ClearTimer(0);                      //タイマー0をリセット
    while(Timer(0)<=14)                 //タイマー0が14以下の時
    {
        turn_right                      //右旋回
        if(SENSOR_2>max)                //センサー2が最大値以上なら
          {
           ClearTimer(1);               //タイマー1をリセット
           max=SENSOR_2 ;               //センサー2を最大値に指定
          }
        else                            //そうでなければ
          {
           max=max;                     //maxをそのまま
           time=Timer(1);               //timeをタイマー1に指定
          }
   }

   ClearTimer(1);                       //タイマー1をリセット
   while(Timer(1)<=time)                //timeがタイマー以下の時
   {turn_left}                          //左旋回

   while(true)
   {
        if(SENSOR_2>=max-minus)         //センサー2が最大値−マイナス以上の時
          {go_straight}                 //直進
        if(SENSOR_2<max-minus)          //センサー2が最大値−マイナス未満の時
          {
           turn_right                   //右旋回
           ClearTimer(2);               //タイマー2をリセット
           until((SENSOR_2>=max-minus)||(Timer(2)==5));  //センサー2が最大値−マイナス以上、またはタイマー2が5まで
          }
        if(SENSOR_2<max-minus)          //まだセンサー2が最大値−マイナス未満の時
          {
           turn_left                    //左旋回
           until(SENSOR_2>=max-minus);  //センサー2が最大 値−マイナス以上まで
          }
        }
}

曲を演奏するロボット

曲を演奏するロボットを作ってみる

プログラミング作成者:ヨコチン/トシ/J/マサ
#define go_straight OnFwd(OUT_A+OUT_C);
#define turn_left OnRev(OUT_A);OnFwd(OUT_C);
#define Do  523        //「ド」
#define Re  587    //「レ」
#define Mi  659    //[ミ」
#define Fa  698    //「ファ」
#define Sol 784    //「ソ」

task play_music()
{
while(true)
{

  PlayTone(Mi,20); Wait(30);     //「ミ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Fa,20); Wait(30);        //「ファ」
  PlayTone(Sol,20); Wait(30);       //「ソ」
  PlayTone(Sol,20); Wait(30);       //「ソ」
  PlayTone(Fa,20); Wait(30);        //「ファ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Re,20); Wait(30);        //「レ」
  PlayTone(Do,20); Wait(30);        //「ド」
  PlayTone(Do,20); Wait(30);        //「ド」
  PlayTone(Re,20); Wait(30);        //「レ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Mi,30); Wait(40);        //「ミ」
  PlayTone(Re,15); Wait(20);        //「レ」
  PlayTone(Re,30); Wait(40);        //「レ」
  
  PlayTone(Mi,20); Wait(30);    //「ミ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Fa,20); Wait(30);        //「ファ」
  PlayTone(Sol,20); Wait(30);       //「ソ」
  PlayTone(Sol,20); Wait(30);       //「ソ」
  PlayTone(Fa,20); Wait(30);        //「ファ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Re,20); Wait(30);        //「レ」 
  PlayTone(Do,20); Wait(30);        //「ド」
  PlayTone(Do,20); Wait(30);        //「ド」
  PlayTone(Re,20); Wait(30);        //「レ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Re,30); Wait(40);        //「レ」
  PlayTone(Do,15); Wait(20);        //「ド」
  PlayTone(Do,15); Wait(40);        //「ド」

  PlayTone(Re,25); Wait(30);    //「レ」
  PlayTone(Re,25); Wait(30);        //「レ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Do,20); Wait(30);        //「ド」
  PlayTone(Re,20); Wait(30);        //「レ」
  PlayTone(Mi,15); Wait(20);        //「ミ」
  PlayTone(Fa,15); Wait(20);        //「ファ」
  PlayTone(Mi,15); Wait(20);        //「ミ」
  PlayTone(Do,15); Wait(20);        //「ド」
  PlayTone(Re,20); Wait(30);        //「レ」
  PlayTone(Mi,15); Wait(20);        //「ミ」
  PlayTone(Fa,15); Wait(20);        //「ファ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Re,20); Wait(30);        //「レ」
  PlayTone(Do,30); Wait(30);        //「ド」
  PlayTone(Re,30); Wait(30);        //「レ」
  PlayTone(Sol,30); Wait(30);       //「ソ」
  
  PlayTone(Mi,20); Wait(30);    //「ミ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Fa,20); Wait(30);        //「ファ」
  PlayTone(Sol,20); Wait(30);       //「ソ」
  PlayTone(Sol,20); Wait(30);       //「ソ」
  PlayTone(Fa,20); Wait(30);        //「ファ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Re,20); Wait(30);        //「レ」
  PlayTone(Do,20); Wait(30);        //「ド」
  PlayTone(Do,20); Wait(30);        //「ド」 
  PlayTone(Re,20); Wait(30);        //「レ」
  PlayTone(Mi,20); Wait(30);        //「ミ」
  PlayTone(Re,30); Wait(40);        //「レ」
  PlayTone(Do,15); Wait(20);        //「ド」
  PlayTone(Do,15); Wait(20);        //「ド」

課題一つ目

 光源を見失った時には曲を演奏しながらぐるっと旋回して光源を探す。

  曲→喜びの歌

プログラミング作成者:ヨコチン/トシ/J/マサ

課題二つ目

 光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探す。

曲→1→喜びの歌、2→ドレミの歌

プログラミング作成者:ヨコチン/トシ/J/マサ

今回の課題に使用したキッド

19.4KB,曲鳴らすよ♪←→15.0KB,サウンドグッド!!

全体的な感想&反省

苦労した点

工夫した点

反省点

完成後期

掲示板

コメントやアドバイスお願いします☆



添付ファイル: fileDSC04223.JPG 280件 [詳細] fileDSC04226.JPG 262件 [詳細] fileDSC04225.JPG 271件 [詳細] fileDSC04224.JPG 276件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-11 (火) 10:41:25