2012a/A4/Chako/M2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2012a/MemberOnly/進行状況A]]
*課題2 ライントレースをするロボット [#z8ba48ff]
ルール
・交差点×2
・ヘアピンカーブ×1
・直角×1
・コースの出入り口の線×4
・一周半以上回ってからコースアウトする
*ロボット本体 [#o7610797]
コースを走りやすくするために(小回り出来るように)、光セ...
#ref(2012a/A4/Chako/M2/本体.jpg,10%,本体)
#ref(2012a/A4/Chako/M2/光センサー2.jpg,10%,光センサー)
*コース [#kbed670f]
コースはこんな感じになりました。描いてみて結構ムズいコー...
#ref(2012a/A4/Chako/M2/コース.jpg,10%,コース)
コースはこのように回りました。
#ref(2012a/A4/Chako/M2/コース回る向き.jpg,10%,コース)
また、コースで難しかったところが3か所あった。
#ref(2012a/A4/Chako/M2/コース難点2.jpg,10%,コース)
?の直角のところではそのままだと曲がりきれずにコースアウト...
?では入るときには問題ないが、線が太かったせいか出るときに...
?でも線の太さのせいか、時々アウトコース気味に走ってしまう...
最後のコースアウトでは、?の直角と同様スタートからの大体の...
*プログラム [#ccd98f71]
/******************************************************...
/* nxtプログラム kadai2 */
/******************************************************...
//定義文
#define in_dis 50 //入り口の距離
#define cr1_dis_r 1300 //1周目の直角までの右車輪の距離
#define cr1_dis_l 1700 //1周目の直角までの左車輪の距離
#define cr2_dis_r 10000 //2周目の直角までの右車輪の距離
#define cr2_dis_l 8900 //2周目の直角までの左車輪の距離
#define out_dis_r 17000 //出口までの右車輪の距離
#define out_dis_l 13800 //出口までの左車輪の距離
#define sensor_c 43 //白と黒の閾値の中心値
//メイン関数
task main(void){
unsigned int mode,in_f=0,out_f=0,cr1_f=0,cr2_...
SetSensorLight(IN_3); //センサーセット
ResetTachoCount(OUT_B); //右車輪の回転数のリセット
ResetTachoCount(OUT_C); //左車輪の回転数のリセット
mode=1;
sensor_w = sensor_c+5; //白の閾値
sensor_b = sensor_c-5; //黒の閾値
while(1){
distance_r=MotorTachoCount(OUT_B); //右車輪の回転数の取得
distance_l=MotorTachoCount(OUT_C); //左車輪の回転数の取得
TextOut(0,LCD_LINE1,"LightSensor ="); //ディスプレイの...
NumOut(85,LCD_LINE1,Sensor(IN_3)); //センサーの値を表示
TextOut(0,LCD_LINE2,"TachoCout_R"); //右車輪のディスプ...
NumOut(0,LCD_LINE3,distance_r); //右車輪の距離表示
TextOut(0,LCD_LINE4,"TachoCout_L"); //左車輪のディスプ...
NumOut(0,LCD_LINE5,distance_l); //左車輪の距離表示
NumOut(0,LCD_LINE6,mode); //場合わけの表示
switch(mode){
case 1:
if(Sensor(IN_3)<=sensor_b){
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_B,40,0);
Wait(5);
}else if(Sensor(IN_3)>=sensor_w){
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_C,40,0);
Wait(5);
}else{
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_BC,38,0);
Wait(5);
}
if(distance_r>in_dis && distance_l>in_dis && in_f==...
mode=2;
}
if(distance_r>cr1_dis_r && distance_l>cr1_dis_l && cr...
mode=2;
}
if(distance_r>cr2_dis_r && distance_l>cr2_dis_l && cr...
mode=2;
}
if(distance_r>out_dis_r && distance_l>out_dis_l && ou...
mode=2;
}
if(out_f==1 && Sensor(IN_3)>=99 && Sensor(IN_3)<=10){
Wait(1000);
OffEx(OUT_BC,0);
while(1);
}
break;
case 2:
if(Sensor(IN_3)<=sensor_b){
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_B,50,0);
OnFwdEx(OUT_C,-20,0);
Wait(5);
}else if(Sensor(IN_3)>=sensor_w){
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_C,50,0);
OnFwdEx(OUT_B,-20,0);
Wait(5);
}else{
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_BC,25,0);
Wait(5);
}
if(distance_r>in_dis+300 && distance_l>in_dis+100 && ...
mode=1;
in_f++;
}
if(distance_r>cr1_dis_r+350 && distance_l>cr1_dis_l+1...
mode=1;
cr1_f++;
}
if(distance_r>cr2_dis_r+350 && distance_l>cr2_dis_l+1...
mode=1;
cr2_f++;
}
if(distance_r>out_dis_r+150 && distance_l>out_dis_l+3...
mode=1;
out_f++;
}
break;
}
}
}
*感想 [#lbf551ac]
今回の課題は前回の課題よりもとても難しく大変でした。コー...
終了行:
[[2012a/MemberOnly/進行状況A]]
*課題2 ライントレースをするロボット [#z8ba48ff]
ルール
・交差点×2
・ヘアピンカーブ×1
・直角×1
・コースの出入り口の線×4
・一周半以上回ってからコースアウトする
*ロボット本体 [#o7610797]
コースを走りやすくするために(小回り出来るように)、光セ...
#ref(2012a/A4/Chako/M2/本体.jpg,10%,本体)
#ref(2012a/A4/Chako/M2/光センサー2.jpg,10%,光センサー)
*コース [#kbed670f]
コースはこんな感じになりました。描いてみて結構ムズいコー...
#ref(2012a/A4/Chako/M2/コース.jpg,10%,コース)
コースはこのように回りました。
#ref(2012a/A4/Chako/M2/コース回る向き.jpg,10%,コース)
また、コースで難しかったところが3か所あった。
#ref(2012a/A4/Chako/M2/コース難点2.jpg,10%,コース)
?の直角のところではそのままだと曲がりきれずにコースアウト...
?では入るときには問題ないが、線が太かったせいか出るときに...
?でも線の太さのせいか、時々アウトコース気味に走ってしまう...
最後のコースアウトでは、?の直角と同様スタートからの大体の...
*プログラム [#ccd98f71]
/******************************************************...
/* nxtプログラム kadai2 */
/******************************************************...
//定義文
#define in_dis 50 //入り口の距離
#define cr1_dis_r 1300 //1周目の直角までの右車輪の距離
#define cr1_dis_l 1700 //1周目の直角までの左車輪の距離
#define cr2_dis_r 10000 //2周目の直角までの右車輪の距離
#define cr2_dis_l 8900 //2周目の直角までの左車輪の距離
#define out_dis_r 17000 //出口までの右車輪の距離
#define out_dis_l 13800 //出口までの左車輪の距離
#define sensor_c 43 //白と黒の閾値の中心値
//メイン関数
task main(void){
unsigned int mode,in_f=0,out_f=0,cr1_f=0,cr2_...
SetSensorLight(IN_3); //センサーセット
ResetTachoCount(OUT_B); //右車輪の回転数のリセット
ResetTachoCount(OUT_C); //左車輪の回転数のリセット
mode=1;
sensor_w = sensor_c+5; //白の閾値
sensor_b = sensor_c-5; //黒の閾値
while(1){
distance_r=MotorTachoCount(OUT_B); //右車輪の回転数の取得
distance_l=MotorTachoCount(OUT_C); //左車輪の回転数の取得
TextOut(0,LCD_LINE1,"LightSensor ="); //ディスプレイの...
NumOut(85,LCD_LINE1,Sensor(IN_3)); //センサーの値を表示
TextOut(0,LCD_LINE2,"TachoCout_R"); //右車輪のディスプ...
NumOut(0,LCD_LINE3,distance_r); //右車輪の距離表示
TextOut(0,LCD_LINE4,"TachoCout_L"); //左車輪のディスプ...
NumOut(0,LCD_LINE5,distance_l); //左車輪の距離表示
NumOut(0,LCD_LINE6,mode); //場合わけの表示
switch(mode){
case 1:
if(Sensor(IN_3)<=sensor_b){
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_B,40,0);
Wait(5);
}else if(Sensor(IN_3)>=sensor_w){
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_C,40,0);
Wait(5);
}else{
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_BC,38,0);
Wait(5);
}
if(distance_r>in_dis && distance_l>in_dis && in_f==...
mode=2;
}
if(distance_r>cr1_dis_r && distance_l>cr1_dis_l && cr...
mode=2;
}
if(distance_r>cr2_dis_r && distance_l>cr2_dis_l && cr...
mode=2;
}
if(distance_r>out_dis_r && distance_l>out_dis_l && ou...
mode=2;
}
if(out_f==1 && Sensor(IN_3)>=99 && Sensor(IN_3)<=10){
Wait(1000);
OffEx(OUT_BC,0);
while(1);
}
break;
case 2:
if(Sensor(IN_3)<=sensor_b){
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_B,50,0);
OnFwdEx(OUT_C,-20,0);
Wait(5);
}else if(Sensor(IN_3)>=sensor_w){
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_C,50,0);
OnFwdEx(OUT_B,-20,0);
Wait(5);
}else{
CoastEx(OUT_BC,0); //モータBCフリー
OnFwdEx(OUT_BC,25,0);
Wait(5);
}
if(distance_r>in_dis+300 && distance_l>in_dis+100 && ...
mode=1;
in_f++;
}
if(distance_r>cr1_dis_r+350 && distance_l>cr1_dis_l+1...
mode=1;
cr1_f++;
}
if(distance_r>cr2_dis_r+350 && distance_l>cr2_dis_l+1...
mode=1;
cr2_f++;
}
if(distance_r>out_dis_r+150 && distance_l>out_dis_l+3...
mode=1;
out_f++;
}
break;
}
}
}
*感想 [#lbf551ac]
今回の課題は前回の課題よりもとても難しく大変でした。コー...
ページ名: