2016a/Member/nemunemu/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
*課題 [#fe6c70fc]
経路を黒い線にそって動くロボットを作成する。
#ref(2016a/Member/nemunemu/Mission2/2016a-mission2.png,ce...
C地点 → S左折 → P左折 → Q直進 → Q直進 → R右折 → P左折 → A...
*構造 [#u18e4d80]
本体の左右にモータを1つ、タイヤを2つずつ付けて動かした。
本体中央に下向きに光センサを付けた。
#ref(2016a/Member/nemunemu/Mission2/IMG_3448.JPG,left,17%...
#ref(2016a/Member/nemunemu/Mission2/IMG_3447.JPG,center,1...
#ref(2016a/Member/nemunemu/Mission2/IMG_3449.JPG,right,17...
写真は左から順に前、後ろ、下から見た様子。
*プログラム [#b4107769]
<定義>
#define black 39 //黒と認識する値
#define white 50 //白と認識する値
#define turn_left_i Off(OUT_A); OnFwd(OUT_C); //大...
#define turn_left_ii OnRev(OUT_A); OnFwd(OUT_C); //小...
#define turn_right_i OnFwd(OUT_A); Off(OUT_C); //大...
#define turn_right_ii OnFwd(OUT_A); OnRev(OUT_C); //小...
#define go_forward OnFwd(OUT_AC); //直進
#define STEP 1 // 一回の判定で進む時間
<サブルーチン>
sub susume() //ライントレース
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while (FastTimer(0)<=23) // ファス...
if (SENSOR_2 < black){ // 線上なら
turn_left_ii; // 左へ
} else if (SENSOR_2 < white){ // 境界線付近なら
go_forward; // 前進
ClearTimer(0); // タイマーリセット
} else { // 線上でなければ
turn_right_ii; // 右へ
ClearTimer(0); // タイマーリセット
}
Wait(STEP);
PlaySound(SOUND_UP); //音
Off(OUT_AC);
Wait(100); //交差点で1秒止まれ
}
ロボットに黒い線をまっすぐ走らせるために、境界線でライン...
sub sasetsu() //交差点を左折
{
turn_left_i;
Wait(240);
Off(OUT_AC);
}
sub usetsu() //交差点を右折
{
turn_right_i;
Wait(240);
Off(OUT_AC);
}
sub massugu() //交差点を直進
{
go_forward;
Wait(120);
Off(OUT_AC);
}
<本文>
task main()
{
repeat(2) //以下の行動を2回繰り返す
{
susume(); //1,C → S 2,S → P
sasetsu(); //1,Sを左折 2,Pを左折
}
repeat(2) //以下の行動を2回繰り返す
{
susume(); //1,P → Q 2,Q → Q
massugu(); //1,Qを直進 2,Qを直進
}
susume(); //Q → R
usetsu(); //Rを右折
susume(); //R → P
sasetsu(); //Pを左折
susume(); //P → A
massugu(); //Aへ入る
}
*感想 [#ebb2a941]
とりあえず、最後まですすめることができなかったのが悔しか...
問題点は、交差点を確実に認識させようとすると、カーブの部...
でも、2つの交差点を綺麗に曲がってすすめることができた時...
終了行:
[[2016a/Member]]
*課題 [#fe6c70fc]
経路を黒い線にそって動くロボットを作成する。
#ref(2016a/Member/nemunemu/Mission2/2016a-mission2.png,ce...
C地点 → S左折 → P左折 → Q直進 → Q直進 → R右折 → P左折 → A...
*構造 [#u18e4d80]
本体の左右にモータを1つ、タイヤを2つずつ付けて動かした。
本体中央に下向きに光センサを付けた。
#ref(2016a/Member/nemunemu/Mission2/IMG_3448.JPG,left,17%...
#ref(2016a/Member/nemunemu/Mission2/IMG_3447.JPG,center,1...
#ref(2016a/Member/nemunemu/Mission2/IMG_3449.JPG,right,17...
写真は左から順に前、後ろ、下から見た様子。
*プログラム [#b4107769]
<定義>
#define black 39 //黒と認識する値
#define white 50 //白と認識する値
#define turn_left_i Off(OUT_A); OnFwd(OUT_C); //大...
#define turn_left_ii OnRev(OUT_A); OnFwd(OUT_C); //小...
#define turn_right_i OnFwd(OUT_A); Off(OUT_C); //大...
#define turn_right_ii OnFwd(OUT_A); OnRev(OUT_C); //小...
#define go_forward OnFwd(OUT_AC); //直進
#define STEP 1 // 一回の判定で進む時間
<サブルーチン>
sub susume() //ライントレース
{
SetSensor(SENSOR_2, SENSOR_LIGHT);
ClearTimer(0);
while (FastTimer(0)<=23) // ファス...
if (SENSOR_2 < black){ // 線上なら
turn_left_ii; // 左へ
} else if (SENSOR_2 < white){ // 境界線付近なら
go_forward; // 前進
ClearTimer(0); // タイマーリセット
} else { // 線上でなければ
turn_right_ii; // 右へ
ClearTimer(0); // タイマーリセット
}
Wait(STEP);
PlaySound(SOUND_UP); //音
Off(OUT_AC);
Wait(100); //交差点で1秒止まれ
}
ロボットに黒い線をまっすぐ走らせるために、境界線でライン...
sub sasetsu() //交差点を左折
{
turn_left_i;
Wait(240);
Off(OUT_AC);
}
sub usetsu() //交差点を右折
{
turn_right_i;
Wait(240);
Off(OUT_AC);
}
sub massugu() //交差点を直進
{
go_forward;
Wait(120);
Off(OUT_AC);
}
<本文>
task main()
{
repeat(2) //以下の行動を2回繰り返す
{
susume(); //1,C → S 2,S → P
sasetsu(); //1,Sを左折 2,Pを左折
}
repeat(2) //以下の行動を2回繰り返す
{
susume(); //1,P → Q 2,Q → Q
massugu(); //1,Qを直進 2,Qを直進
}
susume(); //Q → R
usetsu(); //Rを右折
susume(); //R → P
sasetsu(); //Pを左折
susume(); //P → A
massugu(); //Aへ入る
}
*感想 [#ebb2a941]
とりあえず、最後まですすめることができなかったのが悔しか...
問題点は、交差点を確実に認識させようとすると、カーブの部...
でも、2つの交差点を綺麗に曲がってすすめることができた時...
ページ名: