2013b/Member/wei/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*ロボットの説明 [#u91f4c0f]
-任務
+今回作ったロボットは自作したコースに沿って一周するロボッ...
-問題点
+交差点の認識が一番難しいだと思う、センサーの認識度が低い...
-解決方法
+ロボットは一つずつ交差点到着する時間を測量する、時間によ...
-長所
+正確に交差点を渡させる
-写真
&ref(./32764676.jpeg,100%,robotto);
-攻略
&ref(2013b/Member/dtb/Mission1/bk201.gif,100%,keiro);
+コースを5分割する。詳しくは図より。それに伴いプログラ...
なっている(ゴールの動作は省く)
+(なお走る順番は?→?→?→?→?→ゴールで、吹き出しの中の数字は...
*プログラム [#s2c3add9]
#define THRESHOLD 37
#define HIPOWER 6
#define LOWPOWER 1
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define turn_left set_power_L;Off(OUT_A);OnFwd(OUT_C);
#define senkai_left set_power_L;OnRev(OUT_A);OnFwd(OUT_C);
#define turn_right set_power_L;Off(OUT_C);OnFwd(OUT_A);
#define senkai_right set_power_L;OnRev(OUT_C);OnFwd(OUT_...
#define go_forward set_power_H;OnFwd(OUT_AC);
#define STEP 1
#define SAIDAI 3
#define short_break Off(OUT_AC);Wait(80); //小休憩
#define CROSS_TIME 60 //交差点を渡る時間
#define cross_line(p,q) short_break;senkai_right;Wait(p)...
Wait(CROSS_TIME);Off(OUT_AC); ...
#define counter3 PlaySound(SOUND_CLICK);Off(OUT_AC);Wait...
#define GOOL short_break;turn_right;Wait(350);go_forward...
sub akikan_1() //空き缶をどかすプ...
{
if(SENSOR_3==1){
Off(OUT_AC);Wait(60);
turn_left;Wait(460);
go_forward;Wait(80);
senkai_left;Wait(500);
OnRev(OUT_AC);Wait(80);
senkai_right;Wait(110);
go_forward;until(SENSOR_2 <= THRESHOLD);
senkai_right;Wait(170);}
}
sub akikan_2() //空き缶をどかすプ...
{
if(SENSOR_3==1){
Off(OUT_AC);Wait(60);
senkai_left;Wait(120);
go_forward;Wait(180);
senkai_left;Wait(500);
OnRev(OUT_AC);Wait(100);
senkai_right;Wait(80);
go_forward;until(SENSOR_2 <= THRESHOLD);}
}
sub line_race() //普通の黒線を走るプロ...
{
int nOnline=0;
if(SENSOR_2 < THRESHOLD -2){
senkai_right;
}else if(SENSOR_2 < THRESHOLD -1){ //黒い線上
turn_right;
}else if(SENSOR_2 <= THRESHOLD){ //黒い線と白い線の...
go_forward;
}else if(SENSOR_2 < THRESHOLD +2){ //白い線上
turn_left;
}else{senkai_left;}
Wait(STEP);nOnline=0;
}
sub before_cross_line() //境界線付近の黒線を走...
{
int nOnline=0;
while (nOnline < SAIDAI){
if(SENSOR_2 < THRESHOLD -3){
counter3;
senkai_right;
nOnline++;
}else{
if(SENSOR_2 < THRESHOLD -1){
turn_right;
}else if(SENSOR_2 <= THRESHOLD){
go_forward;
}else if(SENSOR_2 < THRESHOLD +2){
turn_left;
}else{senkai_left;}
nOnline=0;
}
Wait(STEP);
} //while(<...
}
task main()
{
SetSensor(SENSOR_3,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_LIGHT);
int nCross=0;
ClearTimer(0);
while(nCross<6){
if(nCross==0){
while(FastTimer(0)<2350){ //2350ミリで第一交差点...
line_race();
akikan_1();
} //while(lin...
if(FastTimer(0)>=2350){ //第一交差点を渡る
before_cross_line();
cross_line(30,0);
} //if(cross...
PlaySound(SOUND_DOWN); //声を出す
ClearTimer(0);
nCross++;
} //nCross0...
else if(nCross==1){
while(FastTimer(0)<830){ //第二交差点到着する
line_race();
} //while(lin...
if(FastTimer(1)>=830){ //交差点を渡る
before_cross_line();
cross_line(0,0);
} //while(cros...
PlaySound(SOUND_DOWN);
ClearTimer(0); //タイマーをゼロになる
nCross++;
} //nCross1終...
else if(nCross==2){
while(FastTimer(0)<100){ //第三交差点
line_race();
} //while(lin...
if(FastTimer(0)>=100){ //交差点を渡す
before_cross_line();
cross_line(0,0);
} //while(cro...
PlaySound(SOUND_DOWN);
ClearTimer(0); //タイマーをゼロになる
nCross++;
} //nCross2...
else if(nCross==3){
while(FastTimer(0)<1070){ //第四交差点」
line_race();
} //while(lin...
if(FastTimer(1)>=1070){ //交差点を渡す
before_cross_line();
cross_line(0,60);
} //if(cross...
PlaySound(SOUND_DOWN); //声を出す
ClearTimer(0); //タイマーをゼロになる
nCross++;
} //nCross3...
else if(nCross==4){
while(FastTimer(0)<1650){ //出発点に到着
line_race();
akikan_2();
} //while(lin...
if(FastTimer(0)>=1650){
before_cross_line();
} //if(ゴ...
PlaySound(SOUND_UP);
nCross++;
} //nCross4終...
else{
GOOL;
nCross++;
} ...
}
}
終了行:
目次
#contents
*ロボットの説明 [#u91f4c0f]
-任務
+今回作ったロボットは自作したコースに沿って一周するロボッ...
-問題点
+交差点の認識が一番難しいだと思う、センサーの認識度が低い...
-解決方法
+ロボットは一つずつ交差点到着する時間を測量する、時間によ...
-長所
+正確に交差点を渡させる
-写真
&ref(./32764676.jpeg,100%,robotto);
-攻略
&ref(2013b/Member/dtb/Mission1/bk201.gif,100%,keiro);
+コースを5分割する。詳しくは図より。それに伴いプログラ...
なっている(ゴールの動作は省く)
+(なお走る順番は?→?→?→?→?→ゴールで、吹き出しの中の数字は...
*プログラム [#s2c3add9]
#define THRESHOLD 37
#define HIPOWER 6
#define LOWPOWER 1
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define turn_left set_power_L;Off(OUT_A);OnFwd(OUT_C);
#define senkai_left set_power_L;OnRev(OUT_A);OnFwd(OUT_C);
#define turn_right set_power_L;Off(OUT_C);OnFwd(OUT_A);
#define senkai_right set_power_L;OnRev(OUT_C);OnFwd(OUT_...
#define go_forward set_power_H;OnFwd(OUT_AC);
#define STEP 1
#define SAIDAI 3
#define short_break Off(OUT_AC);Wait(80); //小休憩
#define CROSS_TIME 60 //交差点を渡る時間
#define cross_line(p,q) short_break;senkai_right;Wait(p)...
Wait(CROSS_TIME);Off(OUT_AC); ...
#define counter3 PlaySound(SOUND_CLICK);Off(OUT_AC);Wait...
#define GOOL short_break;turn_right;Wait(350);go_forward...
sub akikan_1() //空き缶をどかすプ...
{
if(SENSOR_3==1){
Off(OUT_AC);Wait(60);
turn_left;Wait(460);
go_forward;Wait(80);
senkai_left;Wait(500);
OnRev(OUT_AC);Wait(80);
senkai_right;Wait(110);
go_forward;until(SENSOR_2 <= THRESHOLD);
senkai_right;Wait(170);}
}
sub akikan_2() //空き缶をどかすプ...
{
if(SENSOR_3==1){
Off(OUT_AC);Wait(60);
senkai_left;Wait(120);
go_forward;Wait(180);
senkai_left;Wait(500);
OnRev(OUT_AC);Wait(100);
senkai_right;Wait(80);
go_forward;until(SENSOR_2 <= THRESHOLD);}
}
sub line_race() //普通の黒線を走るプロ...
{
int nOnline=0;
if(SENSOR_2 < THRESHOLD -2){
senkai_right;
}else if(SENSOR_2 < THRESHOLD -1){ //黒い線上
turn_right;
}else if(SENSOR_2 <= THRESHOLD){ //黒い線と白い線の...
go_forward;
}else if(SENSOR_2 < THRESHOLD +2){ //白い線上
turn_left;
}else{senkai_left;}
Wait(STEP);nOnline=0;
}
sub before_cross_line() //境界線付近の黒線を走...
{
int nOnline=0;
while (nOnline < SAIDAI){
if(SENSOR_2 < THRESHOLD -3){
counter3;
senkai_right;
nOnline++;
}else{
if(SENSOR_2 < THRESHOLD -1){
turn_right;
}else if(SENSOR_2 <= THRESHOLD){
go_forward;
}else if(SENSOR_2 < THRESHOLD +2){
turn_left;
}else{senkai_left;}
nOnline=0;
}
Wait(STEP);
} //while(<...
}
task main()
{
SetSensor(SENSOR_3,SENSOR_TOUCH);
SetSensor(SENSOR_2,SENSOR_LIGHT);
int nCross=0;
ClearTimer(0);
while(nCross<6){
if(nCross==0){
while(FastTimer(0)<2350){ //2350ミリで第一交差点...
line_race();
akikan_1();
} //while(lin...
if(FastTimer(0)>=2350){ //第一交差点を渡る
before_cross_line();
cross_line(30,0);
} //if(cross...
PlaySound(SOUND_DOWN); //声を出す
ClearTimer(0);
nCross++;
} //nCross0...
else if(nCross==1){
while(FastTimer(0)<830){ //第二交差点到着する
line_race();
} //while(lin...
if(FastTimer(1)>=830){ //交差点を渡る
before_cross_line();
cross_line(0,0);
} //while(cros...
PlaySound(SOUND_DOWN);
ClearTimer(0); //タイマーをゼロになる
nCross++;
} //nCross1終...
else if(nCross==2){
while(FastTimer(0)<100){ //第三交差点
line_race();
} //while(lin...
if(FastTimer(0)>=100){ //交差点を渡す
before_cross_line();
cross_line(0,0);
} //while(cro...
PlaySound(SOUND_DOWN);
ClearTimer(0); //タイマーをゼロになる
nCross++;
} //nCross2...
else if(nCross==3){
while(FastTimer(0)<1070){ //第四交差点」
line_race();
} //while(lin...
if(FastTimer(1)>=1070){ //交差点を渡す
before_cross_line();
cross_line(0,60);
} //if(cross...
PlaySound(SOUND_DOWN); //声を出す
ClearTimer(0); //タイマーをゼロになる
nCross++;
} //nCross3...
else if(nCross==4){
while(FastTimer(0)<1650){ //出発点に到着
line_race();
akikan_2();
} //while(lin...
if(FastTimer(0)>=1650){
before_cross_line();
} //if(ゴ...
PlaySound(SOUND_UP);
nCross++;
} //nCross4終...
else{
GOOL;
nCross++;
} ...
}
}
ページ名: