- 追加された行はこの色です。
- 削除された行はこの色です。
[[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);
}