2017a/Member/takato/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2017a/Member]]
*課題について [#b551f234]
**右折ルート [#w9fb12af]
#ref(2017a/Member/takato/Mission2/コースj.png,100%)
E右折(SOUND_UP)
P一時停止(SOUND_DOWN)&左折
Q(SOUND_UP)&直進
R(SOUND_UP)&左折
T一時停止(SOUND_DOWN)&直進
T一時停止(SOUND_DOWN)&直進
H(SOUND_UP)
G(SOUND_UP)
S一時停止(SOUND_DOWN)&左折
P直進(SOUND_UP)
Q左折(SOUND_UP)
F(SOUND_UP)
E直進
A停止(SOUND_DOWN)
といったコースです。
*ロボットについて [#pa074fe5]
**工夫した点 [#sc125f70]
できるだけセンサーの位置をロボット本体に近くして、急旋...
左側正面 &ref(2017a/Member/takato/Mission2/taka.jpg,50%);...
今回の課題ではロボットの大きさ制限(幅15cm長さ18cm以内)が...
*プログラムについて [#q6d5df60]
**define [#r2bc4ac1]
#define THRESHOLD 45 //閾値
#define SPEED_H 40
#define SPEED_L 25
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H, SPEED_H); //前方に直進
#define turn_left1 OnRL(SPEED_H, -SPEED_H); //左に旋回
#define turn_left0 OnRL(SPEED_L, 0); //左に旋回(左側...
#define turn_right0 OnRL(0, SPEED_L); //右に旋回(右側...
#define turn_right1 OnRL(-SPEED_L, SPEED_L); //右に旋回
#define STEP 1
#define nMAX 100 //最大値
#define short_break Off(OUT_BC); Wait(1000); //一秒停止
#define cross_line RotateMotor(OUT_BC,35,122); //交差...
#define turn_right60 RotateMotor(OUT_BC,25,40); RotateMo...
#define turn_right45 RotateMotor(OUT_C,25,400); RotateMo...
#define turn_left90 RotateMotor(OUT_B,25,20); //左折(...
#define turn_left60 RotateMotor(OUT_BC,25,70);RotateM...
#define turn_left80 RotateMotor(OUT_BC,25,70); RotateMot...
**subrutine [#b8aefbec]
sub asd() //交差点を感知したら右折
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
PlaySound(SOUND_UP);
turn_right60;
nOnline=0;
}
sub ksd() //交差点を感知したら左折
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
PlaySound(SOUND_DOWN);
short_break;
turn_left90;
nOnline=0;
}
sub csd() //交差点を感知したら直進
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
PlaySound(SOUND_UP);
turn_right60;
nOnline=0;
}
sub dsd() //交差点を感知したら左折
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
PlaySound(SOUND_UP);
turn_right1; Wait(nMAX*STEP);
turn_left80;
nOnline=0;
}
sub msd() //交差点を感知したら直進
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
PlaySound(SOUND_DOWN);
short_break;
cross_line;
nOnline=0;
}
sub gsd() //交差点を感知したら右
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
PlaySound(SOUND_UP);
turn_right60;
nOnline=0;
}
sub wsd() //左急カーブ
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
turn_left60;
nOnline=0;
}
sub vsd() //右急カーブ
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
turn_right45;
nOnline=0;
}
**メインタスク [#vbef8b70]
task main ()
{
asd();
ksd();
csd();
dsd();
msd();
msd();
gsd();
wsd();
vsd();
gsd();
ksd();
csd();
dsd();
asd();
msd();
msd();
}
**交差点の検知の仕方 [#h1b3dabf]
必ず交差点を検知するときは直進すると黒い部分にぶつかる側...
*問題点 [#n1f1e00f]
ロボットのセンサーを近づけようとした結果、センサーをし...
*最後に [#b11ef7f4]
最終的に3回に1回くらいしか成功できず、安定性が低いプログ...
次はついにロボコンなので今回の改善点をしっかりと考慮して...
終了行:
[[2017a/Member]]
*課題について [#b551f234]
**右折ルート [#w9fb12af]
#ref(2017a/Member/takato/Mission2/コースj.png,100%)
E右折(SOUND_UP)
P一時停止(SOUND_DOWN)&左折
Q(SOUND_UP)&直進
R(SOUND_UP)&左折
T一時停止(SOUND_DOWN)&直進
T一時停止(SOUND_DOWN)&直進
H(SOUND_UP)
G(SOUND_UP)
S一時停止(SOUND_DOWN)&左折
P直進(SOUND_UP)
Q左折(SOUND_UP)
F(SOUND_UP)
E直進
A停止(SOUND_DOWN)
といったコースです。
*ロボットについて [#pa074fe5]
**工夫した点 [#sc125f70]
できるだけセンサーの位置をロボット本体に近くして、急旋...
左側正面 &ref(2017a/Member/takato/Mission2/taka.jpg,50%);...
今回の課題ではロボットの大きさ制限(幅15cm長さ18cm以内)が...
*プログラムについて [#q6d5df60]
**define [#r2bc4ac1]
#define THRESHOLD 45 //閾値
#define SPEED_H 40
#define SPEED_L 25
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OU...
#define go_forward OnRL(SPEED_H, SPEED_H); //前方に直進
#define turn_left1 OnRL(SPEED_H, -SPEED_H); //左に旋回
#define turn_left0 OnRL(SPEED_L, 0); //左に旋回(左側...
#define turn_right0 OnRL(0, SPEED_L); //右に旋回(右側...
#define turn_right1 OnRL(-SPEED_L, SPEED_L); //右に旋回
#define STEP 1
#define nMAX 100 //最大値
#define short_break Off(OUT_BC); Wait(1000); //一秒停止
#define cross_line RotateMotor(OUT_BC,35,122); //交差...
#define turn_right60 RotateMotor(OUT_BC,25,40); RotateMo...
#define turn_right45 RotateMotor(OUT_C,25,400); RotateMo...
#define turn_left90 RotateMotor(OUT_B,25,20); //左折(...
#define turn_left60 RotateMotor(OUT_BC,25,70);RotateM...
#define turn_left80 RotateMotor(OUT_BC,25,70); RotateMot...
**subrutine [#b8aefbec]
sub asd() //交差点を感知したら右折
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
PlaySound(SOUND_UP);
turn_right60;
nOnline=0;
}
sub ksd() //交差点を感知したら左折
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
PlaySound(SOUND_DOWN);
short_break;
turn_left90;
nOnline=0;
}
sub csd() //交差点を感知したら直進
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
PlaySound(SOUND_UP);
turn_right60;
nOnline=0;
}
sub dsd() //交差点を感知したら左折
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
PlaySound(SOUND_UP);
turn_right1; Wait(nMAX*STEP);
turn_left80;
nOnline=0;
}
sub msd() //交差点を感知したら直進
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
PlaySound(SOUND_DOWN);
short_break;
cross_line;
nOnline=0;
}
sub gsd() //交差点を感知したら右
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
PlaySound(SOUND_UP);
turn_right60;
nOnline=0;
}
sub wsd() //左急カーブ
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_left1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_left0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_right0;
} else {
turn_right1;
}
nOnline=0;
}
Wait(STEP);
}
turn_left60;
nOnline=0;
}
sub vsd() //右急カーブ
{
SetSensorLight(S3);
int nOnline=0;
while (nOnline < nMAX) {
if (SENSOR_3 < THRESHOLD-11) {
turn_right1;
nOnline++;
} else {
if (SENSOR_3 < THRESHOLD-7) {
turn_right0;
} else if (SENSOR_3 < THRESHOLD+7) {
go_forward;
} else if (SENSOR_3 < THRESHOLD+15) {
turn_left0;
} else {
turn_left1;
}
nOnline=0;
}
Wait(STEP);
}
Off(OUT_BC);
turn_right45;
nOnline=0;
}
**メインタスク [#vbef8b70]
task main ()
{
asd();
ksd();
csd();
dsd();
msd();
msd();
gsd();
wsd();
vsd();
gsd();
ksd();
csd();
dsd();
asd();
msd();
msd();
}
**交差点の検知の仕方 [#h1b3dabf]
必ず交差点を検知するときは直進すると黒い部分にぶつかる側...
*問題点 [#n1f1e00f]
ロボットのセンサーを近づけようとした結果、センサーをし...
*最後に [#b11ef7f4]
最終的に3回に1回くらいしか成功できず、安定性が低いプログ...
次はついにロボコンなので今回の改善点をしっかりと考慮して...
ページ名: