2016a/Member/tarahei/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016a/Member]]
*目次 [#vb047a36]
#contents
*はじめに [#gca5125f]
#ref(2016a-mission2.png)
課題2の内容は、光センサーを用いて&br;
次のいずれかの経路を黒い線にそって動くロボットを作成する&br;
(他のメンバーとは別の経路になるようにする)。&br;
ただし、なるべく速く正確に動くロボットになるように工夫して、&br;
交差点では1秒間停止すること。&br;
・A地点からB地点へ (一人目)&br;
A地点 → P直進 → Q直進 → Q直進 → R左折 → B地点&br;
・B地点からC地点へ (二人目)&br;
B地点 → R右折 → Q直進 → Q直進 →P右折 → S右折 → C地点&br;
・C地点からA地点へ (三人目)&br;
C地点 → S左折 → P左折 → Q直進 → Q直進 → R右折 → P左折 → A地点&br;
(>2016年度前期/課題2)より&br;
今回は、A地点からB地点へロボットをライントレースさせた。&br;
*ロボット本体の説明 [#y97e9f0f]
#ref(dc8c76bc-1dc8-4fe5-85a2-f6bf5b867d3f.jpg)
ロボットの前方についているのが光センサーである。&br;
ロボットの機体は初期状態のまま使用した。&br;
#ref(ba881582-7541-414d-bf2f-1e1f75e8949a.jpg)
光センサーは、地表面から1センチほど離した。&br;
*プログラミングの説明 [#x55c6767]
定義文
#define BLACK 34
#define WHITE 70
#define LEFT OnFwd(OUT_B,40);OnRev(OUT_C,20);//左旋回
#define RIGHT OnFwd(OUT_C,40);OnRev(OUT_B,20);//右旋回
#define nMAX 210
#define short_break Off(OUT_BC);PlaySound(SOUND_CLICK);Wait(1000)//小休止かつ発音
#define STEP 1
#define go_f OnFwd(OUT_BC,40);Wait(200);Off(OUT_BC);//前進
#define go_f1 OnFwd(OUT_BC,40);Wait(1000);Off(OUT_BC);//前進1
#define go_f2 OnFwd(OUT_BC,40);Wait(1100);//前進2
#define LEFT2 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(500);
#define RIGHT2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(500);
#define TURN OnFwd(OUT_C,40);OnRev(OUT_B,40);Wait(650);Off(OUT_BC);
#define TURN2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(200);Off(OUT_BC);
サブルーチン
sub normal()
{
SetSensorLight(S2);
int nOnline=0;//黒線のカウント開始
int k=0;//交差点のカウント開始
while(k==0){//交差点のカウントが0の時
while(nOnline < nMAX){//カウントがnMAXより少ないとき
if (SENSOR_2<BLACK) {//黒線上だと右に旋回
RIGHT;
nOnline++;//カウントプラス
} else
if (SENSOR_2<WHITE) {//白だと左旋回
LEFT;
nOnline=0;//黒線のカウントリセット
}
Wait(STEP);
}
short_break;
k++;//交差点のカウントプラス
nOnline=0;//黒線のカウントリセット
}
}
sub normal2()
{
SetSensorLight(S2);
int nOnline=0;//黒線のカウント開始
int k=0;//交差点のカウント開始
while(k==0){//交差点のカウントが0の時
while(nOnline < nMAX){//カウントがnMAX以下の時
if (SENSOR_2<BLACK) {//黒線上なら左旋回
LEFT;
nOnline++;//カウントプラス
} else
if (SENSOR_2<WHITE) {//白なら右旋回
RIGHT;
nOnline=0;//カウントリセット
}
Wait(STEP);
}
short_break;
k++;//交差点のカウントプラス
nOnline=0;
}
}
サブルーチン1は黒線の右側をライントレースし、&br;
サブルーチン2は黒線の左側をライントレースする。
プログラミング
task main()
{
normal2();
go_f1;
normal();
go_f;
normal();
go_f;
normal ();
TURN;
TURN2;
go_f;
normal();
LEFT2;
normal();
go_f2;
Off(OUT_BC);
}
黒のカウントがnMAXの210を超えると交差点と判断する。&br;
交差点と判断されるとそのサブルーチンは終了する。
*感想 [#bdf73b90]
光センサーを用いた課題2は、&br;
センサーの調子や、ロボット自体の判断が関わってきたので&br;
課題1に比べるとかなり難易度が高かった。&br;
プログラミングに関しても、&br;
課題1に比べ、使用する単語が増え、大変だった。&br;
しかしその分、プログラミングに関する&br;
理解が深まった。
終了行:
[[2016a/Member]]
*目次 [#vb047a36]
#contents
*はじめに [#gca5125f]
#ref(2016a-mission2.png)
課題2の内容は、光センサーを用いて&br;
次のいずれかの経路を黒い線にそって動くロボットを作成する&br;
(他のメンバーとは別の経路になるようにする)。&br;
ただし、なるべく速く正確に動くロボットになるように工夫して、&br;
交差点では1秒間停止すること。&br;
・A地点からB地点へ (一人目)&br;
A地点 → P直進 → Q直進 → Q直進 → R左折 → B地点&br;
・B地点からC地点へ (二人目)&br;
B地点 → R右折 → Q直進 → Q直進 →P右折 → S右折 → C地点&br;
・C地点からA地点へ (三人目)&br;
C地点 → S左折 → P左折 → Q直進 → Q直進 → R右折 → P左折 → A地点&br;
(>2016年度前期/課題2)より&br;
今回は、A地点からB地点へロボットをライントレースさせた。&br;
*ロボット本体の説明 [#y97e9f0f]
#ref(dc8c76bc-1dc8-4fe5-85a2-f6bf5b867d3f.jpg)
ロボットの前方についているのが光センサーである。&br;
ロボットの機体は初期状態のまま使用した。&br;
#ref(ba881582-7541-414d-bf2f-1e1f75e8949a.jpg)
光センサーは、地表面から1センチほど離した。&br;
*プログラミングの説明 [#x55c6767]
定義文
#define BLACK 34
#define WHITE 70
#define LEFT OnFwd(OUT_B,40);OnRev(OUT_C,20);//左旋回
#define RIGHT OnFwd(OUT_C,40);OnRev(OUT_B,20);//右旋回
#define nMAX 210
#define short_break Off(OUT_BC);PlaySound(SOUND_CLICK);Wait(1000)//小休止かつ発音
#define STEP 1
#define go_f OnFwd(OUT_BC,40);Wait(200);Off(OUT_BC);//前進
#define go_f1 OnFwd(OUT_BC,40);Wait(1000);Off(OUT_BC);//前進1
#define go_f2 OnFwd(OUT_BC,40);Wait(1100);//前進2
#define LEFT2 OnFwd(OUT_B,40);OnRev(OUT_C,20);Wait(500);
#define RIGHT2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(500);
#define TURN OnFwd(OUT_C,40);OnRev(OUT_B,40);Wait(650);Off(OUT_BC);
#define TURN2 OnFwd(OUT_C,40);OnRev(OUT_B,20);Wait(200);Off(OUT_BC);
サブルーチン
sub normal()
{
SetSensorLight(S2);
int nOnline=0;//黒線のカウント開始
int k=0;//交差点のカウント開始
while(k==0){//交差点のカウントが0の時
while(nOnline < nMAX){//カウントがnMAXより少ないとき
if (SENSOR_2<BLACK) {//黒線上だと右に旋回
RIGHT;
nOnline++;//カウントプラス
} else
if (SENSOR_2<WHITE) {//白だと左旋回
LEFT;
nOnline=0;//黒線のカウントリセット
}
Wait(STEP);
}
short_break;
k++;//交差点のカウントプラス
nOnline=0;//黒線のカウントリセット
}
}
sub normal2()
{
SetSensorLight(S2);
int nOnline=0;//黒線のカウント開始
int k=0;//交差点のカウント開始
while(k==0){//交差点のカウントが0の時
while(nOnline < nMAX){//カウントがnMAX以下の時
if (SENSOR_2<BLACK) {//黒線上なら左旋回
LEFT;
nOnline++;//カウントプラス
} else
if (SENSOR_2<WHITE) {//白なら右旋回
RIGHT;
nOnline=0;//カウントリセット
}
Wait(STEP);
}
short_break;
k++;//交差点のカウントプラス
nOnline=0;
}
}
サブルーチン1は黒線の右側をライントレースし、&br;
サブルーチン2は黒線の左側をライントレースする。
プログラミング
task main()
{
normal2();
go_f1;
normal();
go_f;
normal();
go_f;
normal ();
TURN;
TURN2;
go_f;
normal();
LEFT2;
normal();
go_f2;
Off(OUT_BC);
}
黒のカウントがnMAXの210を超えると交差点と判断する。&br;
交差点と判断されるとそのサブルーチンは終了する。
*感想 [#bdf73b90]
光センサーを用いた課題2は、&br;
センサーの調子や、ロボット自体の判断が関わってきたので&br;
課題1に比べるとかなり難易度が高かった。&br;
プログラミングに関しても、&br;
課題1に比べ、使用する単語が増え、大変だった。&br;
しかしその分、プログラミングに関する&br;
理解が深まった。
ページ名: