2015b/Member/fujiTaka/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2015b/Member]]
目次
#contents
* 課題 [#edfea612]
#ref(2015b/Member/fujiTaka/Mission2/2015b-mission2.png,10...
上の図の黒い線をたどって動くロボットを作成する。
道順は、B→P右折→Q右折→P左折→Q左折→Q直進→P直進→A
(ロボットは黒線の左側を通るようになっている)
* ロボット本体 [#qbb7029a]
#ref(2015b/Member/fujiTaka/Mission2/1452177869585.jpg,50%)
コースの紙を折って保管していたため、折り目でもスムーズに...
* プログラム [#a92e2067]
** 定義 [#q0f3be68]
#define RIGHT OnRev(OUT_C);OnFwd(OUT_A); //右旋回
#define LEFT OnRev(OUT_A);OnFwd(OUT_C); //左旋回
#define TURN_RIGHT OnFwd(OUT_A);Off(OUT_C); //右折
#define TURN_LEFT OnFwd(OUT_C);Off(OUT_A); //左折
#define STREIGHT OnFwd(OUT_AC); //直進
#define TMAX 20
** メインプログラム [#m96c14f0]
task main()
{
int t;
t = 0;
SetSensor(SENSOR_2, SENSOR_LIGHT);
***ライントレース [#hcc7294e]
光センサーによって計測された値が大きいほど前方が白く小さ...
今回はロボットが黒線の左側を通るので、黒と判断した時は左...
while(t <= 11){
ClearTimer(0);
while(FastTimer(0) < TMAX){
if(SENSOR_2 > 54){ //とても...
RIGHT;ClearTimer(0);
} else if (SENSOR_2 < 42){ //とても...
LEFT;
} else if (SENSOR_2 > 50){ //少し白...
TURN_RIGHT;ClearTimer(0); ...
} else if (SENSOR_2 < 44){ //少し黒...
TURN_LEFT;ClearTimer(0);
} else { //黒線の...
STREIGHT;ClearTimer(0);
}
}
*** tについて [#k336d1b4]
変数を使い角を通る度に決められた動きをするようにしている...
t = t + 1;
if(t == 1){ ...
PlaySound(SOUND_DOWN);Off(OUT...
TURN_RIGHT;Wait(100); ...
Off(OUT_AC);Wait(100);
} else if(t == 2){ ...
PlaySound(SOUND_UP);Off(OUT_A...
STREIGHT;Wait(20);TURN_RIGHT;...
Off(OUT_AC);Wait(100);
} else if(t == 3){ ...
TURN_LEFT;Wait(70);
} else if(t == 4){ ...
TURN_LEFT;Wait(150);
} else if(t == 5){ ...
LEFT;Wait(100);
} else if(t == 6){ ...
PlaySound(SOUND_DOWN);Off(OUT...
TURN_LEFT;Wait(150);
Off(OUT_AC);Wait(100);
} else if(t == 7){ ...
PlaySound(SOUND_UP);Off(OUT_A...
LEFT;Wait(150);
Off(OUT_AC);Wait(100);
} else if(t == 8){ ...
PlaySound(SOUND_DOWN);Off(OUT...
STREIGHT;Wait(30);
Off(OUT_AC);Wait(100);
} else if(t == 9){ ...
PlaySound(SOUND_UP);Off(OUT_A...
STREIGHT;Wait(30);
Off(OUT_AC);Wait(100);
} else if(t == 10){ ...
LEFT;Wait(50); ...
} else if(t == 11){ ...
LEFT;Wait(50);
}
}
STREIGHT;Wait(30);Off(OUT_AC); ...
}
** その他 [#p625b4e0]
***交差点 [#v2f2a97b]
交差点の判断にはタイマーを利用した。このプログラムでは光...
*** 閾値 [#ic6bed99]
閾値の設定ではロボットができるだけ滑らかに動くことが出来...
*** 音 [#u031962b]
二種類の音が交差点のたびに交互になるようにし、ロボットが...
*** 交差点での動き [#kfffb5f3]
最初はuntilを使いセンサーが進行方向の黒線を読み取るまで回...
*** 最後のカーブについて [#xf5e0704]
閾値の範囲やTMAXを変更すると交差点が曲がれなくなるため、...
プログラムについては、サブルーチンを使い黒線の右側を通る...
* 感想とまとめ [#a0f7f626]
今回はプログラムの意味をよく理解していなかったせいで効率...
プログラムについては、最後に試した段階でも成功率は6〜7割...
今回も反省点が多かったが次に生かしていきたいと思う。
終了行:
[[2015b/Member]]
目次
#contents
* 課題 [#edfea612]
#ref(2015b/Member/fujiTaka/Mission2/2015b-mission2.png,10...
上の図の黒い線をたどって動くロボットを作成する。
道順は、B→P右折→Q右折→P左折→Q左折→Q直進→P直進→A
(ロボットは黒線の左側を通るようになっている)
* ロボット本体 [#qbb7029a]
#ref(2015b/Member/fujiTaka/Mission2/1452177869585.jpg,50%)
コースの紙を折って保管していたため、折り目でもスムーズに...
* プログラム [#a92e2067]
** 定義 [#q0f3be68]
#define RIGHT OnRev(OUT_C);OnFwd(OUT_A); //右旋回
#define LEFT OnRev(OUT_A);OnFwd(OUT_C); //左旋回
#define TURN_RIGHT OnFwd(OUT_A);Off(OUT_C); //右折
#define TURN_LEFT OnFwd(OUT_C);Off(OUT_A); //左折
#define STREIGHT OnFwd(OUT_AC); //直進
#define TMAX 20
** メインプログラム [#m96c14f0]
task main()
{
int t;
t = 0;
SetSensor(SENSOR_2, SENSOR_LIGHT);
***ライントレース [#hcc7294e]
光センサーによって計測された値が大きいほど前方が白く小さ...
今回はロボットが黒線の左側を通るので、黒と判断した時は左...
while(t <= 11){
ClearTimer(0);
while(FastTimer(0) < TMAX){
if(SENSOR_2 > 54){ //とても...
RIGHT;ClearTimer(0);
} else if (SENSOR_2 < 42){ //とても...
LEFT;
} else if (SENSOR_2 > 50){ //少し白...
TURN_RIGHT;ClearTimer(0); ...
} else if (SENSOR_2 < 44){ //少し黒...
TURN_LEFT;ClearTimer(0);
} else { //黒線の...
STREIGHT;ClearTimer(0);
}
}
*** tについて [#k336d1b4]
変数を使い角を通る度に決められた動きをするようにしている...
t = t + 1;
if(t == 1){ ...
PlaySound(SOUND_DOWN);Off(OUT...
TURN_RIGHT;Wait(100); ...
Off(OUT_AC);Wait(100);
} else if(t == 2){ ...
PlaySound(SOUND_UP);Off(OUT_A...
STREIGHT;Wait(20);TURN_RIGHT;...
Off(OUT_AC);Wait(100);
} else if(t == 3){ ...
TURN_LEFT;Wait(70);
} else if(t == 4){ ...
TURN_LEFT;Wait(150);
} else if(t == 5){ ...
LEFT;Wait(100);
} else if(t == 6){ ...
PlaySound(SOUND_DOWN);Off(OUT...
TURN_LEFT;Wait(150);
Off(OUT_AC);Wait(100);
} else if(t == 7){ ...
PlaySound(SOUND_UP);Off(OUT_A...
LEFT;Wait(150);
Off(OUT_AC);Wait(100);
} else if(t == 8){ ...
PlaySound(SOUND_DOWN);Off(OUT...
STREIGHT;Wait(30);
Off(OUT_AC);Wait(100);
} else if(t == 9){ ...
PlaySound(SOUND_UP);Off(OUT_A...
STREIGHT;Wait(30);
Off(OUT_AC);Wait(100);
} else if(t == 10){ ...
LEFT;Wait(50); ...
} else if(t == 11){ ...
LEFT;Wait(50);
}
}
STREIGHT;Wait(30);Off(OUT_AC); ...
}
** その他 [#p625b4e0]
***交差点 [#v2f2a97b]
交差点の判断にはタイマーを利用した。このプログラムでは光...
*** 閾値 [#ic6bed99]
閾値の設定ではロボットができるだけ滑らかに動くことが出来...
*** 音 [#u031962b]
二種類の音が交差点のたびに交互になるようにし、ロボットが...
*** 交差点での動き [#kfffb5f3]
最初はuntilを使いセンサーが進行方向の黒線を読み取るまで回...
*** 最後のカーブについて [#xf5e0704]
閾値の範囲やTMAXを変更すると交差点が曲がれなくなるため、...
プログラムについては、サブルーチンを使い黒線の右側を通る...
* 感想とまとめ [#a0f7f626]
今回はプログラムの意味をよく理解していなかったせいで効率...
プログラムについては、最後に試した段階でも成功率は6〜7割...
今回も反省点が多かったが次に生かしていきたいと思う。
ページ名: