2014b/Member/edaeda/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
目次
#contents
*Mission1について [#pa195eee]
課題2:決められた黒いラインの上を沿って進むロボットを作る...
詳しくはこちらをご覧ください。→http://yakushi.shinshu-u.a...
*コース [#cdc0922b]
&ref(2014b/Member/edaeda/Mission2/image4.JPG,50%,画像の説...
今回のコース
*ロボットの紹介 [#wdebb8bc]
今回活躍してくれたロボット→
&ref(2014b/Member/edaeda/Mission2/image1.JPG,25%,画像の説...
&ref(2014b/Member/edaeda/Mission2/image2.JPG,25%,画像の説...
**工夫した点 [#z5f1b064]
***光センサ [#c58e7dfd]
光センサとロボットの距離が離れると、光センサが少し先の...
また、数値を読み取りやすくするため、地面と光センサの距...
&ref(2014b/Member/edaeda/Mission2/image3.JPG,25%,画像の説...
**ラインの上を通る仕組み [#e5fe6f36]
光センサは自分で光を発し、紙に反射して戻ってきた光から...
**交差点を見分ける仕組み [#qd1ef6b8]
交差点を見分けることが出来なければ、交差点でロボットが...
*プログラム [#ja825ece]
#define THRESHOLD 49//しきい値は49
#define SPEED 50
#define LOWSPEED 45
#define go_forward OnFwd(OUT_BC,SPEED);
#define high_turn_left OnFwd(OUT_B,SPEED);OnRev(OUT_C,LO...
#define high_turn_right OnRev(OUT_B,LOWSPEED);OnFwd(OUT_...
#define turn_left OnFwd(OUT_B,SPEED);
#define turn_right OnFwd(OUT_C,SPEED);
#define STEP 1
#define tMAX 350//交差点だと判断する時間が0.35秒
#define TURN_RIGHT 750
#define TURN_LEFT 800//右折と左折で角度が違うので、時間...
#define sound PlaySound(SOUND_CLICK);//交差点でサウンド...
task main()
{
SetSensorLight(S3);
long t0=CurrentTick();
int nOnline=0;
while(true)
{if(CurrentTick()-t0<tMAX)
{if(SENSOR_3<THRESHOLD-9){high_turn_left;Wait(STEP);}
else{if(SENSOR_3<THRESHOLD-5){turn_left;}
else if(SENSOR_3<THRESHOLD+5){go_forward;}
else if(SENSOR_3<THRESHOLD+9){turn_right;}
else {high_turn_right;}
t0=CurrentTick();Wait(STEP);
}
}
else{
Off(OUT_BC);
high_turn_right;
Wait(550);
if(nOnline<1){
sound;}
else if(nOnline<2){
sound;sound;high_turn_left;Wait(TURN_LEFT);}
else if(nOnline<3){
sound;sound;sound;go_forward;Wait(300);}
else if(nOnline<5){ sound;sound;so...
go_forward;Wait(200);nOnline++;t0=CurrentTick();Wait(...
}
}
}
**解説 [#i62526d5]
task main()
{
SetSensorLight(S3);
long t0=CurrentTick();
int nOnline=0;
まずタイマーとカウンタを使うことにしました。
while(true)
そしてwhile(true)を使いこれ以後のプログラムは常に繰り返さ...
{if(CurrentTick()-t0<tMAX)
あらかじめtMAXの値を定めておき、タイマーで図った時間がそ...
{if(SENSOR_3<THRESHOLD-9){high_turn_left;Wait(STEP);}
else{if(SENSOR_3<THRESHOLD-5){turn_left;}
else if(SENSOR_3<THRESHOLD+5){go_fo...
else if(SENSOR_3<THRESHOLD+9){turn_...
else {high_turn_right;}
t0=CurrentTick();Wait(STEP);
}
}
あらかじめTHRESHOLDで紙の白い部分と黒いライン上の境目近く...
明るさを5つに分け、明るさが黒から白になるにつれて、急な左...
ちなみに前に回転させているタイヤではない、もう片方のタイ...
急な右左折をするようにしました。
また、 t0=CurrentTick();でずっと黒いライン上にいるとき以...
else
{Off(OUT_BC);
high_turn_right;
Wait(550);
if(nOnline<1){sound;}
else if(nOnline<2){sound;sound;high_turn_left...
else if(nOnline<3){sound;sound;sound;go_forwa...
else if(nOnline<5)
{sound;sound;sound;sound;go_forward;Wait(225);high_turn_r...
go_forward;Wait(200);nOnline++;t0=CurrentTick...
}
}
}
交差点を通りタイマーがtMAXの値を超えた時は、elseにより上...
Off(OUT_BC);で一度動きをとめ、high_turn_right;で交差点だ...
nOnlineつまりカウンタで何回目の交差点を通過したかを判別し...
カウンタの値は、交差点を通過した後にnOnline++;t0=CurrentT...
交差点を何回通過したか分かりやすいように、サブルーチンと...
**苦労した点 [#wb7355d7]
一番苦労したのが、交差点の判断をどうさせるかでした。カ...
また今回のプログラムではelseやif、whileを何度も使ったの...
*反省と感想 [#c0f2ed64]
前回とは違い、プログラムを組む前にどういう形のロボット...
次のロボットを作るときも計画的に進めていきたいと思います。
終了行:
目次
#contents
*Mission1について [#pa195eee]
課題2:決められた黒いラインの上を沿って進むロボットを作る...
詳しくはこちらをご覧ください。→http://yakushi.shinshu-u.a...
*コース [#cdc0922b]
&ref(2014b/Member/edaeda/Mission2/image4.JPG,50%,画像の説...
今回のコース
*ロボットの紹介 [#wdebb8bc]
今回活躍してくれたロボット→
&ref(2014b/Member/edaeda/Mission2/image1.JPG,25%,画像の説...
&ref(2014b/Member/edaeda/Mission2/image2.JPG,25%,画像の説...
**工夫した点 [#z5f1b064]
***光センサ [#c58e7dfd]
光センサとロボットの距離が離れると、光センサが少し先の...
また、数値を読み取りやすくするため、地面と光センサの距...
&ref(2014b/Member/edaeda/Mission2/image3.JPG,25%,画像の説...
**ラインの上を通る仕組み [#e5fe6f36]
光センサは自分で光を発し、紙に反射して戻ってきた光から...
**交差点を見分ける仕組み [#qd1ef6b8]
交差点を見分けることが出来なければ、交差点でロボットが...
*プログラム [#ja825ece]
#define THRESHOLD 49//しきい値は49
#define SPEED 50
#define LOWSPEED 45
#define go_forward OnFwd(OUT_BC,SPEED);
#define high_turn_left OnFwd(OUT_B,SPEED);OnRev(OUT_C,LO...
#define high_turn_right OnRev(OUT_B,LOWSPEED);OnFwd(OUT_...
#define turn_left OnFwd(OUT_B,SPEED);
#define turn_right OnFwd(OUT_C,SPEED);
#define STEP 1
#define tMAX 350//交差点だと判断する時間が0.35秒
#define TURN_RIGHT 750
#define TURN_LEFT 800//右折と左折で角度が違うので、時間...
#define sound PlaySound(SOUND_CLICK);//交差点でサウンド...
task main()
{
SetSensorLight(S3);
long t0=CurrentTick();
int nOnline=0;
while(true)
{if(CurrentTick()-t0<tMAX)
{if(SENSOR_3<THRESHOLD-9){high_turn_left;Wait(STEP);}
else{if(SENSOR_3<THRESHOLD-5){turn_left;}
else if(SENSOR_3<THRESHOLD+5){go_forward;}
else if(SENSOR_3<THRESHOLD+9){turn_right;}
else {high_turn_right;}
t0=CurrentTick();Wait(STEP);
}
}
else{
Off(OUT_BC);
high_turn_right;
Wait(550);
if(nOnline<1){
sound;}
else if(nOnline<2){
sound;sound;high_turn_left;Wait(TURN_LEFT);}
else if(nOnline<3){
sound;sound;sound;go_forward;Wait(300);}
else if(nOnline<5){ sound;sound;so...
go_forward;Wait(200);nOnline++;t0=CurrentTick();Wait(...
}
}
}
**解説 [#i62526d5]
task main()
{
SetSensorLight(S3);
long t0=CurrentTick();
int nOnline=0;
まずタイマーとカウンタを使うことにしました。
while(true)
そしてwhile(true)を使いこれ以後のプログラムは常に繰り返さ...
{if(CurrentTick()-t0<tMAX)
あらかじめtMAXの値を定めておき、タイマーで図った時間がそ...
{if(SENSOR_3<THRESHOLD-9){high_turn_left;Wait(STEP);}
else{if(SENSOR_3<THRESHOLD-5){turn_left;}
else if(SENSOR_3<THRESHOLD+5){go_fo...
else if(SENSOR_3<THRESHOLD+9){turn_...
else {high_turn_right;}
t0=CurrentTick();Wait(STEP);
}
}
あらかじめTHRESHOLDで紙の白い部分と黒いライン上の境目近く...
明るさを5つに分け、明るさが黒から白になるにつれて、急な左...
ちなみに前に回転させているタイヤではない、もう片方のタイ...
急な右左折をするようにしました。
また、 t0=CurrentTick();でずっと黒いライン上にいるとき以...
else
{Off(OUT_BC);
high_turn_right;
Wait(550);
if(nOnline<1){sound;}
else if(nOnline<2){sound;sound;high_turn_left...
else if(nOnline<3){sound;sound;sound;go_forwa...
else if(nOnline<5)
{sound;sound;sound;sound;go_forward;Wait(225);high_turn_r...
go_forward;Wait(200);nOnline++;t0=CurrentTick...
}
}
}
交差点を通りタイマーがtMAXの値を超えた時は、elseにより上...
Off(OUT_BC);で一度動きをとめ、high_turn_right;で交差点だ...
nOnlineつまりカウンタで何回目の交差点を通過したかを判別し...
カウンタの値は、交差点を通過した後にnOnline++;t0=CurrentT...
交差点を何回通過したか分かりやすいように、サブルーチンと...
**苦労した点 [#wb7355d7]
一番苦労したのが、交差点の判断をどうさせるかでした。カ...
また今回のプログラムではelseやif、whileを何度も使ったの...
*反省と感想 [#c0f2ed64]
前回とは違い、プログラムを組む前にどういう形のロボット...
次のロボットを作るときも計画的に進めていきたいと思います。
ページ名: