2005/A2

あーむ

task main(){
 SetPower(OUT_C,4);
 OnRev(OUT_C);Wait(5);Off(OUT_C);	//C is neck
 OnRev(OUT_A);Wait(20);Off(OUT_A);	//A is finger

 while(true){
   ClearMessage();
   until(Message() != 0);
     if(Message() == 1){	//at box
       PlaySound(SOUND_UP);Wait(50);
       OnFwd(OUT_A);	//A_catch
       Wait(100);
       OnFwd(OUT_C);	//C_up
       Wait(100);
       
     PlaySound(SOUND_CLICK) ;Wait(10);
       SendMessage(1);
       Wait(100);
     }
     
     if(Message() == 2){	//at goal
     PlaySound(SOUND_UP) ;Wait(50);
       OnRev(OUT_C);	//C_down
       Wait(100);Off(OUT_C);
       
       OnRev(OUT_A);	//A_release
       Wait(100);Off(OUT_A);
       
       OnFwd(OUT_C);	//C_up
       Wait(100);Off(OUT_C);
       
       PlaySound(SOUND_CLICK) ;Wait(10);
       SendMessage(2);
       Wait(100);
     }
   }
}

トレースだけ

#define ikiti 44
task main(){
 SetSensor(SENSOR_1,SENSOR_LIGHT);
 SetSensor(SENSOR_2,SENSOR_LIGHT);
 Wait(50);
   
 SendMessage(1);Wait(100);
 ClearMessage();
 until (Message() != 0);			//do catch!
 if ( Message() == 1 ){			//gj!
   OnRev(OUT_A);OnFwd(OUT_C);
   until(SENSOR_1 < ikiti);
   OnFwd(OUT_A);
   until(SENSOR_2 < ikiti);
   until(SENSOR_2 > ikiti+5);
   until(SENSOR_1 < ikiti);
   
   while(SENSOR_1 > ikiti || SENSOR_2 > ikiti){	//trace start
     OnFwd(OUT_C);Off(OUT_A);
     until(SENSOR_2 < ikiti);
     Off(OUT_C);OnFwd(OUT_A);
     until(SENSOR_1 < ikiti);
   }
   PlaySound(SOUND_CLICK);Wait(50);

火曜どうでしょう

#define ikiti 44

task main()
{
   SetSensor(SENSOR_1,SENSOR_LIGHT);//SENSOR1 set
   SetSensor(SENSOR_2,SENSOR_LIGHT);//SENSOR2 set
   SetSensor(SENSOR_3,SENSOR_LIGHT);//SENSOR3 set
   Wait(50);
   
   
   
//   ClearMessage(); 
//   SendMessage(1);Wait(100);
//   ClearMessage();
//   until (Message() != 0);
//   if (Message() == 1){
//        OnFwd(OUT_C);OnRev(OUT_A);Wait(95);
//        Off(OUT_A+OUT_C);
//        ClearMessage();
//        PlaySound(SOUND_CLICK);Wait(50);
//        }
//   
//   repeat(2){
//      if(SENSOR_2>45){
//          OnFwd(OUT_A+OUT_C);
//          }
//      if(SENSOR_2<45){
//          Off(OUT_A+OUT_C)
//      Off(OUT_A+OUT_C);
   
   
   SendMessage(1);Wait(100);
   ClearMessage();
   until (Message() != 0);                        //do catch!
   if ( Message() == 1 ){                 //gj!
     OnRev(OUT_A+OUT_C);Wait(20);
     OnRev(OUT_A);OnFwd(OUT_C);
     until(SENSOR_1 < ikiti);
     OnFwd(OUT_A);
     until(SENSOR_2 < ikiti);
     until(SENSOR_2 > ikiti+5);
     until(SENSOR_1 < ikiti);
     }
   Off(OUT_A+OUT_C);Wait(100);
   
   
   OnFwd(OUT_C);OnRev(OUT_A);Wait(18);
   Off(OUT_A+OUT_C);
   
   
   while(SENSOR_1>45||SENSOR_2>45)
    {                    
        if(SENSOR_1< 43){
           Off(OUT_A+OUT_C);
           OnFwd(OUT_C);
           until(SENSOR_2<45);
           }
        
        
        if(SENSOR_2< 43){
           Off(OUT_A+OUT_C);
           OnFwd(OUT_A);
           until(SENSOR_1<45);
           }
           
        
        if((SENSOR_1>43) && (SENSOR_2>43)){   //SENSOR(1&2) Line in
           OnFwd(OUT_A+OUT_C);                 //Go a head
           }
     
     
    }
  
   
   
 //kagohe//
   
   
   
   if(SENSOR_3>50){
       Off(OUT_A+OUT_C);Wait(100);
       OnFwd(OUT_A+OUT_C);Wait(225);
       OnFwd(OUT_A);OnRev(OUT_C);Wait(95);
       Off(OUT_A+OUT_C);
       
       
       
       ClearMessage();
       SendMessage(2);
       until(Message()==2);
       
       
       if(Message()==2){
           OnFwd(OUT_A);OnRev(OUT_C);Wait(120);
           OnFwd(OUT_A+OUT_C);Wait(250);
           }
       }
   
   
   
   if(SENSOR_3<40){
       Off(OUT_A+OUT_C);Wait(100);
       OnFwd(OUT_A+OUT_C);Wait(400);
       OnFwd(OUT_A);OnRev(OUT_C);Wait(95);
       Off(OUT_A+OUT_C);
       
       
       ClearMessage();
       SendMessage(2);
       until(Message()==2);
       
       
       if(Message()==2){
           OnFwd(OUT_A);OnRev(OUT_C);Wait(120);
           OnFwd(OUT_A+OUT_C);Wait(375);
           }
       }
       
       
       
   else{    
       Off(OUT_A+OUT_C);Wait(100);
       OnFwd(OUT_A+OUT_C);Wait(75);
       OnFwd(OUT_A);OnRev(OUT_C);Wait(95);
       Off(OUT_A+OUT_C);
       
       
       ClearMessage();
       SendMessage(2);
       until(Message()==2);
       
       
       if(Message()==2){
           OnFwd(OUT_A);OnRev(OUT_C);Wait(120);
           OnFwd(OUT_A+OUT_C);Wait(100);
           }
       }
   
   
   
   //modottekitaze//
   
   
   
   
   
   while(SENSOR_1>45||SENSOR_2>45)
    {                    
        if(SENSOR_1< 43){
           Off(OUT_A+OUT_C);
           OnFwd(OUT_C);
           until(SENSOR_2<45);
           }
        
        
        if(SENSOR_2< 43){
           Off(OUT_A+OUT_C);
           OnFwd(OUT_A);
           until(SENSOR_1<45);
           }
           
         
        if((SENSOR_1>43) && (SENSOR_2>43)){   //SENSOR(1&2) Line in
           OnFwd(OUT_A+OUT_C);                 //Go a head
           }
     
     
    }
    
   Off(OUT_A+OUT_C);Wait(100); 

}

プログラムについて

「ロボが動かせる段階」になるまで時間がかかったため、
ロボの性能を活かしきるプログラムは書ききれなかった。
一番下のプログラムがコンテスト当日に書いた「ドライブベース用」
一番上のプログラムが完成している「アーム用」

ロボのサイズを「一応」考えたライントレースのプログラム。
 →怪しい動きだった。
とりあえず箱1個を識別し戻ってくるまでは書けたと思っていたが......



1回目  
苦労したライントレースする線に乗るプログラムが機能せず、
障害物の缶の上に箱を置こうとする。

2回目
箱1個をカゴに入れることに成功!
その後、予定では箱を回収しに戻るはずが、腕を広げ「勝ち名乗り?」をあげ回転



すいません、プログラムにオチを書いたつもりはないです。ハイ。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-02-17 (金) 23:45:43 (4933d)