[[2017a/Member]]

目次
#contents
*課題について [#c3a9ed2f]
詳しくは課題([[2017a/Mission2]])を参照。
*ロボット本体 [#p69d1362]
ロボット本体よりもセンサーを前方に取り付けることによりロボット本体の影によるセンサーで読み取る値のブレを軽減した。
*プログラム [#q9a9ed6a]
 #define THRESHOLD 53
 #define SPEED_F 30
 #define SPEED_S 20
 #define turn_left OnFwd(OUT_B,SPEED_S);OnRev(OUT_C,SPEED_S);
 #define turn_right OnFwd(OUT_C,SPEED_S);OnRev(OUT_B,SPEED_S);
 #define go_forward OnFwd(OUT_BC,SPEED_S)
 #define STEP 1 
 #define cross_line go_forward;Wait(450);

 sub line_trace1()
 {
  SetSensorLight(S1);
  long t0 = CurrentTick();
  while (CurrentTick()-t0 < 200) {
    if (SENSOR_1 < THRESHOLD -12) {
      turn_right;
    } else if (SENSOR_1 > THRESHOLD +5) {
      turn_left;
      t0 = CurrentTick()
    } else {
      go_forward;
      t0 = CurrentTick()
     }
    Wait(STEP);
  }
 }

 sub line_trace2()
 {
  SetSensorLight(S1);
  long t0 = CurrentTick();
  while (CurrentTick()-t0 < 150) {
    if (SENSOR_1 < THRESHOLD -12) {
      turn_left;
    } else if (SENSOR_1 > THRESHOLD +5) {
      turn_right;
      t0 = CurrentTick()
    } else {
      go_forward;
      t0 = CurrentTick()
     }
    Wait(STEP);
  }
 }

 sub line_trace3()
 {
  SetSensorLight(S1);
  long t0 = CurrentTick();
  while (CurrentTick()-t0 < 100) {
    if (SENSOR_1 < THRESHOLD -12) {
      turn_right;
    } else if (SENSOR_1 > THRESHOLD +5) {
      turn_left;
      t0 = CurrentTick()
    } else {
      go_forward;
      t0 = CurrentTick()
     }
    Wait(STEP);
  }
 }

 sub line_trace4()
 {
  SetSensorLight(S1);
  long t0 = CurrentTick();
  while (CurrentTick()-t0 < 100) {
    if (SENSOR_1 < THRESHOLD -12) {
      turn_left;
    } else if (SENSOR_1 > THRESHOLD +5) {
      turn_right;
      t0 = CurrentTick()
    } else {
      go_forward;
      t0 = CurrentTick()
     }
    Wait(STEP);
  }
 }

 sub AE()
 {
    line_trace1();
    PlaySound(SOUND_UP); 
    turn_right;
    Wait(300);
    Off(OUT_BC);    
 }
    
 sub EP()
 {
    line_trace1(); 
    Off(OUT_BC);
    PlaySound(SOUND_DOWN);
    Wait(200);
    go_forward;
    Wait(100);
    turn_left;
    Wait(900);
    Off(OUT_BC);
 }

 sub PQ()
 {
    line_trace2();
    cross_line;
    Off(OUT_BC);
 }

 sub QR()
 {
    PlaySound(SOUND_UP);
    line_trace4();
    PlaySound(SOUND_UP);
 }

 sub RT()
 {
    turn_left;
    Wait(200);
    line_trace2();
    Off(OUT_BC);
    PlaySound(SOUND_DOWN);
    Wait(200);
    Off(OUT_BC);
    turn_right;
    Wait(500);
    cross_line;
    Off(OUT_BC);
 }

 sub TT()
 {
    line_trace1();
    Off(OUT_BC);
    PlaySound(SOUND_DOWN);
    Wait(200);
    Off(OUT_BC);
    cross_line;
    Off(OUT_BC);
 }

 sub TH()
 {
    line_trace1();
    PlaySound(SOUND_UP);
 }

 sub HG()
 {
    line_trace1();
    turn_right;
    Wait(1500);
    line_trace1();
    PlaySound(SOUND_UP);
    turn_right;
    Wait(300);
 }

 sub GS()
 {
    line_trace1();
    PlaySound(SOUND_DOWN);
    Wait(200);
    turn_left;
    Wait(1500);
    cross_line;
    Off(OUT_BC);
 }

 sub SP()
 {
    line_trace2();
    cross_line;
    Off(OUT_BC);
 }

 sub PQ2()
 {
    PlaySound(SOUND_UP);
    line_trace4();
    cross_line;
    Off(OUT_BC);
 }
    
 sub QF()
 {    
    PlaySound(SOUND_UP);
    line_trace3();
    PlaySound(SOUND_UP);
 }

 sub FA()
 {    
    line_trace1();    
    PlaySound(SOUND_DOWN);
 }


 task main()
 {
     AE();
     EP();
     PQ();
     QR();
     RT();
     TT();
     TH();
     HG();
     GS();
     SP();
     PQ2();
     QF();
     FA();
 }

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