[[2013b/Member]]
*課題2 [#gde868f5]
**課題のポイント [#h7f5fefb]
#ref(2013b/Member/trtr/Mission2/robocon2013b.png,17.4kb,コース)
***缶を運ぶ…ライントレースの技術や運んでいく方法が試される [#ibe08eb6]
***缶を積む…どんな方法で積むか、確実に積むことができるかが試される [#i6742c22]
***二台のロボットを使ってその連携ができているか…一台ずつ動きを分担するか合体させるか、その連携はとれているか試される [#h94ef63e]

#define HP 7
#define LP 2
#define THRESHOLD 36//ライントレース用閾値
#define turn_right1 OnFwd(OUT_A);
#define go_forward OnRev(OUT_A);
#define TIME_TRACE1 3//トレースの1回の判断で待つ時間
#define TIME_TRACE2 500//「4」で本体を90度回転させる地点を指定する値
#define NB_COUNT 4//交差点識別用の値
#define STACK 11//
**ロボットについて [#t636a00b]

task play_music()
{
***試作品について[#e927d353]


***ロボコン当日のロボット [#h8112edb]
ロボットの全体図。
#ref(2013b/Member/trtr/Mission2/写真.JPG,104kb,robot1)

#ref(2013b/Member/trtr/Mission2/写真 3.JPG,104kb,robot2)
#ref(2013b/Member/trtr/Mission2/写真 4.JPG,116kb,robot3)
#ref(2013b/Member/trtr/Mission2/写真 5.JPG,160kb,robot4)
#ref(2013b/Member/trtr/Mission2/bou2.JPG,88kb,robot5)

 #define HP 7
 #define LP 2
 #define THRESHOLD 36//ライントレース用閾値
 #define turn_right1 OnFwd(OUT_A);
 #define go_forward OnRev(OUT_A);
 #define TIME_TRACE1 3//トレースの1回の判断で待つ時間
 #define TIME_TRACE2 500//「4」で本体を90度回転させる地点を指定する値
 #define NB_COUNT 4//交差点識別用の値
 #define STACK 11//


 task play_music()
 {
  PlayTone(740,28);Wait(5);
  PlayTone(587,28);Wait(5);
  PlayTone(440,28);Wait(5);
  PlayTone(587,28);Wait(5);
  PlayTone(659,28);Wait(5);
  PlayTone(880,61);Wait(5);
  PlayTone(440,28);Wait(5);
  PlayTone(659,28);Wait(5);
  PlayTone(740,28);Wait(5);
  PlayTone(659,28);Wait(5);
  PlayTone(440,28);Wait(5);
  PlayTone(587,80);
} 
 } 

task main()
{
 task main()
 {
  SetSensor(SENSOR_2,SENSOR_LIGHT);
  SetPower(OUT_A,HP);
  int nbk=0;
  int ncros=0;
//1.黒線に当たるまで前進
  int ncros=0; 
1.黒線に当たるまで前進
  OnRev(OUT_A);
  until (SENSOR_2<=THRESHOLD);
//2.左折しライントレース
2.左折しライントレース
  turn_right1;
  Wait(400);
  ClearTimer(0);
  while(FastTimer(0)<=1000){
   if(SENSOR_2<THRESHOLD){go_forward;}
    else{turn_right1;}
    Wait(TIME_TRACE1);
  }
//缶積み
  start play_music;
  SetPower(OUT_BC,2);
  OnFwd(OUT_B);Wait(68);Off(OUT_B);
  stop play_music;
  while(ncros<2){//1
    while(nbk<NB_COUNT){//2
      if(SENSOR_2<THRESHOLD){go_forward;nbk++;}
      else{turn_right1;nbk=0;}
    Wait(TIME_TRACE1);
    }//2
    Wait(50);
    turn_right1;Wait(NB_COUNT*TIME_TRACE1);
    nbk=0;
    ncros++;
    go_forward;Wait(60);
  }//1
  while(nbk<NB_COUNT){//1
   if(SENSOR_2<THRESHOLD){go_forward;nbk++;}
    else{turn_right1;nbk=0;}
    Wait(TIME_TRACE1);
  }//1
  turn_right1;Wait(350);
  go_forward;Wait(200);
  turn_right1;Wait(170);
  until(Message()==STACK);
  start play_music;
  OnFwd(OUT_C);Wait(1000);
  OnRev(OUT_B);Wait(68);Off(OUT_BC);
  stop play_music;
  turn_right1;Wait(350);Off(OUT_A);
  ClearMessage();
  repeat(2){
    until(Message()==STACK);
    OnFwd(OUT_B);Wait(68);Off(OUT_B);
    ClearMessage();
    until(Message()==STACK);
    OnFwd(OUT_C);Wait(1000);
    OnRev(OUT_B);Wait(68);Off(OUT_BC);
    turn_right1;Wait(350);Off(OUT_A);
    ClearMessage();
  }
  OnRev(OUT_A);
  Wait(170);
  go_forward;
  Wait(600);
  Off(OUT_A);
  }


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS