2008a/A3~ 08T2100A 08A1010A

黒い線に沿って動くロボット

プログラム

とおりゃんせ

#define la 440
#define Si 494
#define Do  523
#define Re  587
#define Mi  659
#define Fa  698
#define Sol 784
#define La 880


 
task play_music()                               // 音楽を演奏するタスク
{
while(true)
    {  PlayTone(Mi,100); Wait(100);               //ミ 
       PlayTone(Mi,50); Wait(50);               //ミ 
       PlayTone(Re,50); Wait(50);               //レ
       PlayTone(Mi,50); Wait(50);               //ミ 
       PlayTone(Mi,25); Wait(25);               //ミ 
       PlayTone(Re,25); Wait(25);               //レ
       PlayTone(Si,100); Wait(100);               //シ
   
       PlayTone(Fa,50); Wait(50);               //ファ
       PlayTone(Fa,25); Wait(25);               //ファ
       PlayTone(Fa,25); Wait(25);               //ファ
       PlayTone(La,50); Wait(50);               //ラ
       PlayTone(Fa,25); Wait(25);               //ファ
       PlayTone(Mi,25); Wait(25);               //ミ 
       PlayTone(Fa,25); Wait(25);               //ファ
       PlayTone(Mi,25); Wait(25);               //ミ 
       PlayTone(Re,25); Wait(25);               //レ
       PlayTone(Re,25); Wait(25);               //レ
       PlayTone(Mi,100); Wait(100);               //ミ 
     
       PlayTone(Fa,50); Wait(50);               //ファ
       PlayTone(Fa,25); Wait(25);               //ファ
       PlayTone(Fa,25); Wait(25);               //ファ
       PlayTone(La,50); Wait(50);               //ラ
       PlayTone(Fa,25); Wait(25);               //ファ
       PlayTone(Mi,25); Wait(25);               //ミ 
       PlayTone(Fa,25); Wait(25);               //ファ
       PlayTone(Mi,25); Wait(25);               //ミ 
       PlayTone(Re,25); Wait(25);               //レ
       PlayTone(Re,25); Wait(25);               //レ
       PlayTone(Mi,100); Wait(100);               //ミ 
     
       PlayTone(Do,75); Wait(75);               //ド
       PlayTone(Do,25); Wait(25);               //ド
       PlayTone(Mi,50); Wait(50);               //ミ 
       PlayTone(Do,25); Wait(25);               //ド
       PlayTone(Si,25); Wait(25);               //シ
       PlayTone(Do,25); Wait(25);               //ド
       PlayTone(Si,25); Wait(25);               //シ
       PlayTone(la,25); Wait(25);               //ラ
       PlayTone(la,25); Wait(25);               //ラ
       PlayTone(Si,100); Wait(100);               //シ
    } 
} 

メイン

#define THRESHOLD 42 //光センサーの閾値 
#define  RUN_TIME  1600 //走行時間
      task main()
{
    start play_music ;    // 演奏を開始
}
task line_trace() { //ライントレース開始
 SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサー1
 SetSensor(SENSOR_3,SENSOR_LIGHT); //光センサー3
 SetSensor(SENSOR_2,SENSOR_TOUCH); // タッチセンサー
 SetPower(OUT_A+OUT_C,7); //移動スピード
 ClearTimer(0);  //タイマーon
 while (Timer(0)<= RUN_TIME){  //タッチセンサーが作動したら止まる。
   if (SENSOR_2 ==1 ){                                         
     Off(OUT_A+OUT_C);
     Wait(150);}
     
     else{
          if ((SENSOR_1> THRESHOLD) &&(SENSOR_3> THRESHOLD)){ //光センサーが閾値以上で前進
           OnFwd(OUT_A); 
           OnFwd(OUT_C);} 
     else{
          if (SENSOR_1> THRESHOLD){ //光センサー1が閾値以上で右に旋回
            OnFwd(OUT_A);
            Off(OUT_C);}
     else{ 
          if (SENSOR_3> THRESHOLD){ //光センサー3が閾値以上で左に旋回
            Off(OUT_A);
            OnFwd(OUT_C);} 
     else{
          if ((SENSOR_1< THRESHOLD ) &&(SENSOR_3< THRESHOLD)){ //光センサーが閾値以下で一時停止
          Off(OUT_A+OUT_C);
          Wait(80);
          OnFwd(OUT_A+OUT_C);  
          Wait(150);}
                           }
                  }
           }
      }
   }
   Off(OUT_A+OUT_C); //コースを3周した後に完全停止
    Wait(150);}

プログラム全体の流れ

基本的には、黒いラインをトレースして、コースから外れた場合元のコースに戻る。

コース

couse.jpg

ロボットの種々の機能

front.jpg

1左光センサー 1由来
2右光センサー 3由来
3左センサー 2由来
4右センサー 2由来

back2.jpg

1右タイヤ C由来
2左タイヤ A由来

使ったセンサーの働き

光センサー:黒いラインをトレースする。 タッチセンサー:もう一方のチームのマシンにあたったら止まる。

困った点

うまくタイマーが使えずに、マシンが止まらなかったこと。

工夫した点

センサーが誤作動を起こさないように、できるだけコースの紙に光センサーを近づけた。 光センサーとタッチセンサーをマシンの前につけると不安定だったので、部品をくつけて安定させた。

コメントをお願いします


全体的にもう少し詳しく書いてください。例えば、ライントレースの原理を説明したり、工夫した点です。そうすれば、○になります。 F.I.



添付ファイル: fileback2.jpg 217件 [詳細] filecouse.jpg 205件 [詳細] filefront.jpg 213件 [詳細] fileback.jpg 106件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-07-10 (木) 16:57:25