- 追加された行はこの色です。
- 削除された行はこの色です。
目次
#Contents
*課題2の内容 [#ifff3ad7]
#ref(2016b/Member/god22ila/Mission2/2016b-mission2.png,50%,コース)
今回の課題2の内容は上図のコースにライントレーサーを走らせ、途中に置いてあるピンポン球を掴み、ゴールにシュートするというものである。僕はA地点をスタート→P地点直進→Q地点直進→ピンポン球を掴む→Q地点直進→R地点右折→P地点直進→S地点左折→D地点へシュートというものである。
*ロボットの説明 [#r97767b5]
**本体について [#he30576e]
**アームについて [#t2a53cfc]
*プログラミングについて [#t3de1858]
#define TR OnFwd(OUT_C,40);
#define TL OnFwd(OUT_B,40);
#define turnright OnFwd(OUT_C,40);
#define turnleft OnFwd(OUT_B,40);
#define SR OnFwdSync(OUT_BC,40,-100);
#define SL OnFwdSync(OUT_BC,40,100);
#define GF OnFwdSync(OUT_BC,40,0);
#define gomae OnFwdSync(OUT_BC,40,0);
#define XrdTR TR Wait(500);SL Wait(1400);Off(OUT_BC);Wait(300);GF Wait(500);Off(OUT_BC);n++;
#define XrdST TR Wait(1000); GF Wait(200);n++;
#define UU OnFwd(OUT_A,25);Wait(700);Off(OUT_A);
#define UD OnRev(OUT_A,25);Wait(700);Off(OUT_A);
#define armup OnFwd(OUT_A,25);Wait(700);Off(OUT_A);
#define armdown OnRev(OUT_A,25);Wait(700);Off(OUT_A);
#define XX PlaySound(SOUND_CLICK);Wait(500);Wait(1000);
**センサーとタイマーの起動 [#eb19429c]
task main()
{
SetSensorLight(S1);
SetSensorLight(S1);//光センサー起動
int n=0;
long t0 = CurrentTick();
UU
long t0 = CurrentTick();//時間を測り始める直前の時刻をt0に代入する
armup//アームを上げる
まず、タイマーと光センサーを起動させる
while(n<7){
t0 = CurrentTick();
while(CurrentTick()-t0<600){
if(SENSOR_1>42){
SL
while(CurrentTick()-t0<600){ //CurrentTick()とt0の差が0.6秒以下の時
if(SENSOR_1>42){ //もしセンサーの値が42以上だったら左に旋回してタイマーをリセット
senkaileft
t0 = CurrentTick();
}
else if(SENSOR_1>40){
TL
else if(SENSOR_1>40){ //もしセンサーの値が40以上なら左に曲がりタイマーをリセット
turnleft
t0 = CurrentTick();
}
else if(SENSOR_1>38){
GF
else if(SENSOR_1>38){ //もしセンサーの値が38以上なら前進してタイマーをリセット
gomae
t0 = CurrentTick();
}
else if(SENSOR_1>37){
TR
else if(SENSOR_1>37){ //もしセンサーの値が37以上なら右に曲がりタイマーをリセット
turnright
t0 = CurrentTick();
}
else{
SR
senkairight
}
}
Off(OUT_BC);
while(n==6){
XrdST
Off(OUT_BC);
UU
armup
OnFwdSync(OUT_BC,40,0);
Wait(300);
n++;
}
アームを上げてそのまま本体で押し込んでシュート
while(n==5){
SR
Wait(700);
n++; //変えた
}
while(n==4){
XX
XrdST
}
while(n==3){
XrdTR
}
while(n==2){
XX
XrdST
}
while(n==1){
XX
XrdST
PlaySound(SOUND_CLICK);
Wait(500);
t0 = CurrentTick();
while(CurrentTick()-t0<6000){
if(SENSOR_1>42){
SL
}
else if(SENSOR_1>40){
TL
turnleft
}
else if(SENSOR_1>38){
GF
}
else if(SENSOR_1>37){
TR
turnright
}
else{
SR
}
}
Off(OUT_BC);
Wait(500);
UD
armdown
}
while(n==0){
XX
XrdST //変えた
}
}
}