2013a/Member/kobayoshi/Mission1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*ロボットの紹介 [#g50440f6]
#ref(./robo1.jpeg,80%,私達の作成したロボット)
まず、カーブをスムーズに回れるように、ロボットの幅をでき...
#ref(./robo2.jpeg,80%,横から見たロボット)
それを防ぐために、うまくバランスが取れるよう、後ろに大き...
#ref(./robo5.jpeg,80%,上から見たロボット)
#ref(./robo6.jpeg,80%,正面から見たロボット)
缶をはさむ、鋏の部分について、左右一本ずつでは安定しない...
*コース攻略法 [#ab414ee5]
#ref(./line1.jpg,100%,コース1)
**反時計回り [#mec4877d]
-プログラムの切り替えは、時間の経過で行う。
-まず、最初の交差点をすぎる前までは、交差点なしのライント...
-そこから、交差点ありのライントレースに切り替える。
-カーブのところは、交差点無しで回る。
-2つの交差点を交差点ありのプログラムで越える。
-先ほどとは逆方向のカーブができるプログラムで、カーブを抜...
-交差点を、交差点ありのもので抜ける。
-そのまま進んでいき、直角をお曲がる。
-直角を曲がったあと、Uターンして、缶を置く動作を行う。
-Uターンで戻って、ライントレースして、ゴールまで行く。
*プログラムの説明 [#z34e2a68]
以下のプログラムは、動作確認はしたものの、少々不安な点が...
#define THRESHOLD 42 // しきい値の設定を行った
#define HIPOWER 5 //モーターを強く回した時の、モーターの...
#define LOWPOWER 1 //モーターを弱く回した時の、モーター...
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define go_forward set_power_H; OnFwd(OUT_AC);前進
#define turn_left1 set_power_L; OnRev(OUT_A); OnFwd(OUT_...
#define turn_left0 set_power_L; Off(OUT_A); OnFwd(OUT_C)...
#define turn_right1 set_power_L; OnFwd(OUT_A); OnRev(OUT...
#define turn_right0 set_power_L; OnFwd(OUT_A); Off(OUT_C...
#define STEP 1
#define nMAX 3
#define short_break Off(OUT_AC); Wait(10);
#define cross_time 20 //交差点を曲がる際に進む時間
#define cross_line go_forward set_power_H; OnFwd(OUT_AC)...
#define time1 800
#define time2 3400
#define time3 900
#define time4 800
#define time5 1400
#define time6 4200
上の6つの時間は、それぞれプログラムの切り替えを行うタイ...
task main() {
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_1, SENSOR_TOUCH);
ClearTimer(0);
int counter=0;
int nOnline=0;
if (SENSOR_1 == 0){
OnFwd(OUT_B);
}
while(FastTimer(0) <= time1){
if (SENSOR_1 == 1){
OnRev(OUT_B);
}
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
} else if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 < THRESHOLD +0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_left1;
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);
while(counter < 1){
while(nOnline < nMAX){
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
nOnline++;
} else {
if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 <THRESHOLD -0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right1; Wait(nMAX*STEP);
cross_line;
PlaySound(SOUND_UP);
nOnline=0;
counter++;
}
PlaySound(SOUND_CLICK);
ClearTimer(0);
while(FastTimer(0) < time3){
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
} else if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 < THRESHOLD +0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_right1;
}
Wait(STEP);
}
couter=0;
while(counter < 3){
while(nOnline < nMAX){
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
nOnline++;
} else {
if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 < THRESHOLD -0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right; Wait(nMAX*STEP);
cross_line;
PlaySound(SOUND_UP);
nOnline=0;
counter++;
}
PlaySound(SOUND_CLICK);
ClearTimer(0);
while(FastTimer(0) <= time5){
if (SENSOR_1 == 1){
OnRev(OUT_B);
}
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
} else if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 < THRESHOLD +0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_left1;
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);
counter=0;
while(counter < 1){
while(nOnline < nMAX){
if (SENSOR_2 < THRESHOLD -4){
turn_left1;
nOnline++;
} else {
if (SENSOR_2 < THRESHOLD -3){
turn_left0;
} else if (SENSOR_2 < THRESHOLD -0){
go_forwrd;
} else if (SENSOR_2 < THRESHOLD +2){
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
OnRev(OUT_B);
OnRev(OUT_A);
OnFwd(OUT_C);
Wait(400);
Off(OUT_AC);
OnFwd(OUT_AC);
Wait(200);
OnFwd(OUT_B);
Off(OUT_AC);
Wait(100);
OnRev(OUT_C);
OnFwd(OUT_A);
Wait(400);
while(true){
if (SENSOR_2 < THRESHOLD -4){
turn_left1;
} else if (SENSOR_2 < THRESHOLD -3){
turn_left0;
} else if (SENSOR_2 < THRESHOLD +0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_right0;
} else {
turn_right1;
}
Wait(STEP);
counter++;
}
PlaySound(SOUND_CLICK);
}
}
*まとめ [#ufeba444]
最初思っていた以上に、プログラムを作ることが難しかった。...
終了行:
*ロボットの紹介 [#g50440f6]
#ref(./robo1.jpeg,80%,私達の作成したロボット)
まず、カーブをスムーズに回れるように、ロボットの幅をでき...
#ref(./robo2.jpeg,80%,横から見たロボット)
それを防ぐために、うまくバランスが取れるよう、後ろに大き...
#ref(./robo5.jpeg,80%,上から見たロボット)
#ref(./robo6.jpeg,80%,正面から見たロボット)
缶をはさむ、鋏の部分について、左右一本ずつでは安定しない...
*コース攻略法 [#ab414ee5]
#ref(./line1.jpg,100%,コース1)
**反時計回り [#mec4877d]
-プログラムの切り替えは、時間の経過で行う。
-まず、最初の交差点をすぎる前までは、交差点なしのライント...
-そこから、交差点ありのライントレースに切り替える。
-カーブのところは、交差点無しで回る。
-2つの交差点を交差点ありのプログラムで越える。
-先ほどとは逆方向のカーブができるプログラムで、カーブを抜...
-交差点を、交差点ありのもので抜ける。
-そのまま進んでいき、直角をお曲がる。
-直角を曲がったあと、Uターンして、缶を置く動作を行う。
-Uターンで戻って、ライントレースして、ゴールまで行く。
*プログラムの説明 [#z34e2a68]
以下のプログラムは、動作確認はしたものの、少々不安な点が...
#define THRESHOLD 42 // しきい値の設定を行った
#define HIPOWER 5 //モーターを強く回した時の、モーターの...
#define LOWPOWER 1 //モーターを弱く回した時の、モーター...
#define set_power_H SetPower(OUT_AC,HIPOWER);
#define set_power_L SetPower(OUT_AC,LOWPOWER);
#define go_forward set_power_H; OnFwd(OUT_AC);前進
#define turn_left1 set_power_L; OnRev(OUT_A); OnFwd(OUT_...
#define turn_left0 set_power_L; Off(OUT_A); OnFwd(OUT_C)...
#define turn_right1 set_power_L; OnFwd(OUT_A); OnRev(OUT...
#define turn_right0 set_power_L; OnFwd(OUT_A); Off(OUT_C...
#define STEP 1
#define nMAX 3
#define short_break Off(OUT_AC); Wait(10);
#define cross_time 20 //交差点を曲がる際に進む時間
#define cross_line go_forward set_power_H; OnFwd(OUT_AC)...
#define time1 800
#define time2 3400
#define time3 900
#define time4 800
#define time5 1400
#define time6 4200
上の6つの時間は、それぞれプログラムの切り替えを行うタイ...
task main() {
SetSensor(SENSOR_2, SENSOR_LIGHT);
SetSensor(SENSOR_1, SENSOR_TOUCH);
ClearTimer(0);
int counter=0;
int nOnline=0;
if (SENSOR_1 == 0){
OnFwd(OUT_B);
}
while(FastTimer(0) <= time1){
if (SENSOR_1 == 1){
OnRev(OUT_B);
}
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
} else if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 < THRESHOLD +0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_left1;
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);
while(counter < 1){
while(nOnline < nMAX){
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
nOnline++;
} else {
if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 <THRESHOLD -0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right1; Wait(nMAX*STEP);
cross_line;
PlaySound(SOUND_UP);
nOnline=0;
counter++;
}
PlaySound(SOUND_CLICK);
ClearTimer(0);
while(FastTimer(0) < time3){
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
} else if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 < THRESHOLD +0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_right1;
}
Wait(STEP);
}
couter=0;
while(counter < 3){
while(nOnline < nMAX){
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
nOnline++;
} else {
if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 < THRESHOLD -0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
short_break;
turn_right; Wait(nMAX*STEP);
cross_line;
PlaySound(SOUND_UP);
nOnline=0;
counter++;
}
PlaySound(SOUND_CLICK);
ClearTimer(0);
while(FastTimer(0) <= time5){
if (SENSOR_1 == 1){
OnRev(OUT_B);
}
if (SENSOR_2 < THRESHOLD -4){
turn_right1;
} else if (SENSOR_2 < THRESHOLD -3){
turn_right0;
} else if (SENSOR_2 < THRESHOLD +0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_left0;
} else {
turn_left1;
}
Wait(STEP);
}
PlaySound(SOUND_CLICK);
counter=0;
while(counter < 1){
while(nOnline < nMAX){
if (SENSOR_2 < THRESHOLD -4){
turn_left1;
nOnline++;
} else {
if (SENSOR_2 < THRESHOLD -3){
turn_left0;
} else if (SENSOR_2 < THRESHOLD -0){
go_forwrd;
} else if (SENSOR_2 < THRESHOLD +2){
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
OnRev(OUT_B);
OnRev(OUT_A);
OnFwd(OUT_C);
Wait(400);
Off(OUT_AC);
OnFwd(OUT_AC);
Wait(200);
OnFwd(OUT_B);
Off(OUT_AC);
Wait(100);
OnRev(OUT_C);
OnFwd(OUT_A);
Wait(400);
while(true){
if (SENSOR_2 < THRESHOLD -4){
turn_left1;
} else if (SENSOR_2 < THRESHOLD -3){
turn_left0;
} else if (SENSOR_2 < THRESHOLD +0){
go_forward;
} else if (SENSOR_2 < THRESHOLD +2){
turn_right0;
} else {
turn_right1;
}
Wait(STEP);
counter++;
}
PlaySound(SOUND_CLICK);
}
}
*まとめ [#ufeba444]
最初思っていた以上に、プログラムを作ることが難しかった。...
ページ名: