2016a/Member/yui/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*目次 [#cdeb80d5]
#contents
*課題 [#e2ed52bc]
risを使い光センサーによりライントレースを行う。
コースは模造紙にマジックペンで以下のように描いて作る。
&ref(2016a-mission2.png);
私がロボットを走らせるコースは
A地点からB地点へ
A地点 → P直進 → Q直進 → Q直進 → R左折 → B地点
である
*本体について [#x624b260]
&ref(attachment00(3).jpg);
課題1のときから大きく構造は変えていないがいくつか工夫はし...
&ref(attachment01(2).jpg);
ふたつ目は光センサーの取り付け位置である。遠すぎると、少...
*プログラミング [#n4da8cb7]
**定義 [#w84e84e0]
初めに以下の定義をした
#define turn_left Off(OUT_A); OnFwd(OUT_C);//左折
#define turn_leftS OnRev(OUT_A); OnFwd(OUT_C); //左旋回
#define turn_right OnFwd(OUT_A); Off(OUT_C);//右折
#define turn_rightS OnFwd(OUT_A); OnRev(OUT_C);//右旋回
#define go_forward OnFwd(OUT_AC);//直進
**サブルーチン [#ed4b7539]
メインのタスクを簡単にするためにいくつかサブルーチンを作...
***ラインを辿るために [#c1b860ce]
私たちの班は、黒線と白い部分の境目をトレースするという方...
境目の明るさを測り。それよりも明るくなったら黒線の方へ、...
これがそのサブルーチンである
sub line_follow()
{
ClearTimer(0); // まずはタイマーをリセットする(...
while(FastTimer(0)<25)//whileのカッコで囲まれた動作は
{ //タイマーが一定の時間を超え...
if(SENSOR_2<45){//もし、センサーがラインの...
turn_leftS;// 左旋回→これが交差点判別...
}
else if(SENSOR_2<47){//もし、センサーがラ...
turn_left;// 左折
ClearTimer(0);//タイマーをリセットする
}
else if(SENSOR_2<54){//もし、センサーがラインの境目の...
go_forward; //直進
ClearTimer(0);//タイマーをリセットする
}
else if(SENSOR_2<57){//もし、センサーがラインの境目よ...
turn_right; //右折
ClearTimer(0);//タイマーをリセットする
}
else { //もし、センサーがラインの境目よりかなり明...
turn_rightS; //右旋回
ClearTimer(0);//
}
}
Off(OUT_AC);//whileの範囲を超えたら電源が落ちる
}
ラインの左側をトレースしたため暗くなったら左折、明るくな...
どこからが明るく、どこからが暗いのか具体的な値を決めるた...
***交差点を認識するために [#xf892129]
私達の班では、交差点では比較的長く左折してもセンサーが明...
そこでタイマーを用い、一定時間左旋回(交差点はかなり暗い...
***交差点を超える [#b97abbf4]
交差点上ではライントレースができないそのため以下のサブル...
sub go_forwardS()//交差点を直進
{
turn_rightS;//右旋回(僅かに左に傾いているため)
Wait(10);
go_forward;//直進
Wait(30);
}
sub turn_leftSS()//交差点を左折
{
while(SENSOR_2<47)//明るくなるまで左折
{
turn_leftS;
}
}
**task main [#w6b00b69]
いよいよメインの動作についてだ
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);//光センサーをセ...
line_follow(); //AP間のラインを...
PlaySound(SOUND_LOW_BEEP); //交差点を認識し...
Wait(100); //交差点では一秒...
PlaySound(SOUND_CLICK); //出発前にもう一...
go_forwardS(); //交差点を直進
line_follow(); //PQ間のラインを...
PlaySound(SOUND_LOW_BEEP); //交差点を認識し...
Wait(100); //交差点では一秒...
PlaySound(SOUND_CLICK); //出発前にもう一...
go_forwardS(); //交差点を直進
line_follow(); //QQ間のラインを...
PlaySound(SOUND_LOW_BEEP); //交差点を認識し...
Wait(100); //交差点では一秒...
PlaySound(SOUND_CLICK); //出発前にもう一...
go_forwardS(); //交差点を直進
line_follow(); //QR間のラインを...
PlaySound(SOUND_LOW_BEEP); //交差点を認識し...
Wait(100); //交差点では一秒...
PlaySound(SOUND_CLICK); //出発前にもう一...
turn_leftSS(); //交差点を左折
line_follow(); //RB間のラインを...
go_forward; //最後の枠を超える
Wait(100);
Off(OUT_AC); //停止
PlaySound(SOUND_UP) ; //クリア時のサウ...
}
サブルーチンのおかげでかなり簡略化されている。が、サウン...
*まとめ [#k2c8a417]
きちんとゴールまでたどり着くことができた。
センサーの位置でスピードが劇的に変わったので驚いた。
ただしまれに誤動作をおこし、ゴールにたどりつけないことも...
しかし課題1のときよりも楽しんで取り組めたと思う。
終了行:
*目次 [#cdeb80d5]
#contents
*課題 [#e2ed52bc]
risを使い光センサーによりライントレースを行う。
コースは模造紙にマジックペンで以下のように描いて作る。
&ref(2016a-mission2.png);
私がロボットを走らせるコースは
A地点からB地点へ
A地点 → P直進 → Q直進 → Q直進 → R左折 → B地点
である
*本体について [#x624b260]
&ref(attachment00(3).jpg);
課題1のときから大きく構造は変えていないがいくつか工夫はし...
&ref(attachment01(2).jpg);
ふたつ目は光センサーの取り付け位置である。遠すぎると、少...
*プログラミング [#n4da8cb7]
**定義 [#w84e84e0]
初めに以下の定義をした
#define turn_left Off(OUT_A); OnFwd(OUT_C);//左折
#define turn_leftS OnRev(OUT_A); OnFwd(OUT_C); //左旋回
#define turn_right OnFwd(OUT_A); Off(OUT_C);//右折
#define turn_rightS OnFwd(OUT_A); OnRev(OUT_C);//右旋回
#define go_forward OnFwd(OUT_AC);//直進
**サブルーチン [#ed4b7539]
メインのタスクを簡単にするためにいくつかサブルーチンを作...
***ラインを辿るために [#c1b860ce]
私たちの班は、黒線と白い部分の境目をトレースするという方...
境目の明るさを測り。それよりも明るくなったら黒線の方へ、...
これがそのサブルーチンである
sub line_follow()
{
ClearTimer(0); // まずはタイマーをリセットする(...
while(FastTimer(0)<25)//whileのカッコで囲まれた動作は
{ //タイマーが一定の時間を超え...
if(SENSOR_2<45){//もし、センサーがラインの...
turn_leftS;// 左旋回→これが交差点判別...
}
else if(SENSOR_2<47){//もし、センサーがラ...
turn_left;// 左折
ClearTimer(0);//タイマーをリセットする
}
else if(SENSOR_2<54){//もし、センサーがラインの境目の...
go_forward; //直進
ClearTimer(0);//タイマーをリセットする
}
else if(SENSOR_2<57){//もし、センサーがラインの境目よ...
turn_right; //右折
ClearTimer(0);//タイマーをリセットする
}
else { //もし、センサーがラインの境目よりかなり明...
turn_rightS; //右旋回
ClearTimer(0);//
}
}
Off(OUT_AC);//whileの範囲を超えたら電源が落ちる
}
ラインの左側をトレースしたため暗くなったら左折、明るくな...
どこからが明るく、どこからが暗いのか具体的な値を決めるた...
***交差点を認識するために [#xf892129]
私達の班では、交差点では比較的長く左折してもセンサーが明...
そこでタイマーを用い、一定時間左旋回(交差点はかなり暗い...
***交差点を超える [#b97abbf4]
交差点上ではライントレースができないそのため以下のサブル...
sub go_forwardS()//交差点を直進
{
turn_rightS;//右旋回(僅かに左に傾いているため)
Wait(10);
go_forward;//直進
Wait(30);
}
sub turn_leftSS()//交差点を左折
{
while(SENSOR_2<47)//明るくなるまで左折
{
turn_leftS;
}
}
**task main [#w6b00b69]
いよいよメインの動作についてだ
task main()
{
SetSensor(SENSOR_2, SENSOR_LIGHT);//光センサーをセ...
line_follow(); //AP間のラインを...
PlaySound(SOUND_LOW_BEEP); //交差点を認識し...
Wait(100); //交差点では一秒...
PlaySound(SOUND_CLICK); //出発前にもう一...
go_forwardS(); //交差点を直進
line_follow(); //PQ間のラインを...
PlaySound(SOUND_LOW_BEEP); //交差点を認識し...
Wait(100); //交差点では一秒...
PlaySound(SOUND_CLICK); //出発前にもう一...
go_forwardS(); //交差点を直進
line_follow(); //QQ間のラインを...
PlaySound(SOUND_LOW_BEEP); //交差点を認識し...
Wait(100); //交差点では一秒...
PlaySound(SOUND_CLICK); //出発前にもう一...
go_forwardS(); //交差点を直進
line_follow(); //QR間のラインを...
PlaySound(SOUND_LOW_BEEP); //交差点を認識し...
Wait(100); //交差点では一秒...
PlaySound(SOUND_CLICK); //出発前にもう一...
turn_leftSS(); //交差点を左折
line_follow(); //RB間のラインを...
go_forward; //最後の枠を超える
Wait(100);
Off(OUT_AC); //停止
PlaySound(SOUND_UP) ; //クリア時のサウ...
}
サブルーチンのおかげでかなり簡略化されている。が、サウン...
*まとめ [#k2c8a417]
きちんとゴールまでたどり着くことができた。
センサーの位置でスピードが劇的に変わったので驚いた。
ただしまれに誤動作をおこし、ゴールにたどりつけないことも...
しかし課題1のときよりも楽しんで取り組めたと思う。
ページ名: