2016b/Member/pen/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[2016b/Member]]&br;
目次&br;
#contents
*課題について [#wf7938bc]
&ref(2016b/Mission2/2016b-mission2.png,50%,マップ);
&br;
今回の目標は「A,P,Q,R,P,S,D」のルートを通りDにボールをシ...
*機体について [#d4e5d54f]
今回の機体の制作には、いかにボールを捕まえる機構に入れる...
**機体の全体像 [#z7e1c6b3]
&ref(2016b/Member/pen/Mission2/全体像.jpeg,50%,全体像);
&br;
***ボールの検出と取得の機構 [#u46aaf07]
&ref(2016b/Member/pen/Mission2/アーム.jpeg,50%);
&br;
先端に超音波センサーを付けているため、テコの原理のように...
***ライントレース部分(下半身) [#r192e8f3]
&ref(2016b/Member/pen/Mission2/下半身1.jpeg,50%);
&ref(2016b/Member/pen/Mission2/下半身2.jpeg,50%);
&ref(2016b/Member/pen/Mission2/前輪.jpeg,50%);
&br;
ライントレース部分では、ほとんど左右対称に設計してありま...
*プログラムについて [#j535e444]
**プログラムの解説 [#pbb32be3]
***ライントレースの処理 [#g8518f00]
このプログラムは、「黒、黒に近い、白に少し近い、白に近い...
***交差点の検出 [#xe8b6c3f]
交差点の検出には、「どの反射率から判定するか」、「どれぐ...
よって、反射率が低いときに少ない時間ライトセンサーがいる...
***ボールの検出 [#wb2100f0]
ボールの検出には、超音波センサーを利用しました。超音波セ...
実際に、本機の超音波センサーで地面を見た時は12cm程ですが...
今回はそのような、正確な値が返ってこないことを利用して、...
&ref(2016b/Member/pen/Mission2/超音波センサー.jpeg,50%);
***交差点の処理 [#b34a19fd]
交差点では、交差点であることの判別に時間を使って処理をし...
&ref(2016b/Member/pen/Mission2/kousatenn.jpeg,50%,交差点...
&ref(2016b/Member/pen/Mission2/kousatenn_1.jpeg,50%,交差...
***シュートの処理 [#v00cde94]
5個目の交差点(S)を通過後、Dに向けてライントレースを一定...
***ボール取得のメロディ [#v137c818]
ピタゴラスイッチを入れました。ですが、発表までに何処で流...
**プログラムの流れ [#mea78a76]
+スタート地点から前進する(枠から光センサーを出す)
+ライントレースを数秒交差点判定無しで行う
+Pまで行き交差点で直進する
+Qでボールを取り2,3の作業をSに行くまで続ける
+DQ間のラインにライントレースで同調し、慣性によってシュート
**本文 [#x06b00a6]
#define THRESHOLD 45 //白と黒の中間の反射率
#define SPEED_Fast 60 // 速いスピード
#define SPEED_Slow 50 // 遅いスピード
#define OnLR(speedR,speedL) OnRev(OUT_A,speedR);OnRev(OU...
/*
task pitagora() //ボールを取ったときのメドレー
{
//while(true)
//{
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1568,140);
Wait(160);
PlayTone(1480,130);
Wait(300);
PlayTone(1175,130);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(988,130);
Wait(150);
PlayTone(880,140);
Wait(310);
PlayTone(988,130);
Wait(150);
PlayTone(1046,140);
Wait(310);
PlayTone(1109,130);
Wait(150);
PlayTone(1175,140);
Wait(460);
PlayTone(1175,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(2093,140);
Wait(160);
PlayTone(1975,130);
Wait(300);
PlayTone(1568,140);
Wait(160);
PlayTone(1760,130);
Wait(300);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(988,130);
Wait(150);
PlayTone(880,440);
Wait(460);
PlayTone(1318,130);
Wait(310);
PlayTone(1318,130);
Wait(150);
PlayTone(1175,440);
Wait(770);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1568,140);
Wait(160);
PlayTone(1480,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,130);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(2093,130);
Wait(150);
PlayTone(1975,140);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1760,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1046,130);
Wait(150);
PlayTone(1175,130);
Wait(300);
PlayTone(1046,140);
Wait(160);
PlayTone(1175,130);
Wait(300);
PlayTone(1397,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1046,140);
Wait(160);
PlayTone(1175,130);
Wait(300);
PlayTone(932,130);
Wait(160);
PlayTone(1046,130);
Wait(300);
PlayTone(932,130);
Wait(150);
PlayTone(1046,140);
Wait(310);
PlayTone(1244,130);
Wait(150);
PlayTone(1175,140);
Wait(310);
PlayTone(1046,130);
Wait(150);
PlayTone(988,140);
Wait(310);
PlayTone(880,130);
Wait(150);
PlayTone(784,1050);
Wait(1380);
PlayTone(1397,440);
Wait(460);
PlayTone(1318,130);
Wait(300);
PlayTone(1318,140);
Wait(160);
PlayTone(1480,130);
Wait(150);
PlayTone(1318,130);
Wait(150);
PlayTone(1480,140);
Wait(160);
PlayTone(1568,440);
Wait(460);
PlayTone(1175,130);
Wait(300);
PlayTone(988,130);
Wait(160);
PlayTone(1046,130);
Wait(300);
PlayTone(1046,130);
Wait(150);
PlayTone(1175,140);
Wait(160);
PlayTone(1109,130);
Wait(150);
PlayTone(1175,130);
Wait(150);
PlayTone(988,440);
Wait(770);
PlayTone(1397,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1318,130);
Wait(150);
PlayTone(1480,130);
Wait(150);
PlayTone(1318,140);
Wait(160);
PlayTone(1480,130);
Wait(150);
PlayTone(1568,440);
Wait(460);
PlayTone(1175,130);
Wait(310);
PlayTone(988,130);
Wait(150);
PlayTone(1046,130);
Wait(310);
PlayTone(1046,130);
Wait(150);
PlayTone(1175,130);
Wait(150);
PlayTone(1109,130);
Wait(150);
PlayTone(1175,140);
Wait(160);
PlayTone(988,440);
Wait(760);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(300);
PlayTone(1568,140);
Wait(160);
PlayTone(1480,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,130);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(2093,130);
Wait(150);
PlayTone(1975,140);
Wait(460);
PlayTone(1568,140);
Wait(1230);
// }
//}
//task pitagora_owari()
//{
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(2093,130);
Wait(150);
PlayTone(1975,130);
Wait(460);
PlayTone(1568,280);
Wait(300);
//}
}
*/
sub line_trace(int sensor_light_lv) //ライントレースの...
{
if (sensor_light_lv < THRESHOLD-8)
{
OnRev(OUT_B,SPEED_Fast);
OnRev(OUT_A,-SPEED_Fast);
}
else if (sensor_light_lv < THRESHOLD-5)
{
OnRev(OUT_B,SPEED_Slow);
}
else if (sensor_light_lv < THRESHOLD +5)
{
OnRev(OUT_AB,50);
}
else if (sensor_light_lv < THRESHOLD+8)
{
OnRev(OUT_A,SPEED_Slow);
}
else
{
OnRev(OUT_A,SPEED_Fast);
OnRev(OUT_B,-SPEED_Fast);
}
}
sub go_forward_intersection() //交差点を通過する?の操作
{
OnRev(OUT_AB,SPEED_Slow);
Wait(410);
Off(OUT_AB);
}
sub turn_r_intersection() //交差点の右に車体を向かせる
{
OnLR(60,-60);
Wait(450);
}
sub turn_l_intersection() // 交差点の左に車体を向かせる
{
OnLR(-60,60);
Wait(450);
} //ボールを取る動作
sub arm_lock()
{
Off(OUT_ABC);
OnRev(OUT_AB,25);
OnFwd(OUT_C,-12);
Wait(3200);
Off(OUT_ABC);
}
sub arm_unlock() //アームを上げ、ボールを自...
{
OnFwd(OUT_C,30);
}
long intersection_judgment(long t0) //Sensorの値...
{
if (SENSOR_1 > 34)
{
t0 = CurrentTick();
}
return t0 ;
}
task main()
{
SetSensorLight(S1); // ライトセンサーの...
SetSensorLowspeed(S2); //超音波センサーの...
int intersection_count = 0; //交差点のカウント...
int count_look=0; //ボールを掴んでい...
long t0 = CurrentTick(); //時間を記憶する変...
RotateMotor(OUT_AB,SPEED_Slow,-1000); //スタート...
while(CurrentTick()-t0 < 6000) //前進から6...
{
line_trace(SENSOR_1); //ライント...
}
t0 = CurrentTick(); // 交差点の...
while(true)
{
//NumOut(0,0,SensorUS(S2) , true);
while(CurrentTick()-t0 < 410) //指定し...
{
line_trace(SENSOR_1);
t0=intersection_judgment(t0);
}
PlaySound(SOUND_UP); //ルー...
Off(OUT_AB); //車体...
Wait(1000);
intersection_count +=1; //交差...
if (intersection_count <=5 ) //交差...
{
turn_r_intersection(); //?の処理
go_forward_intersection(); //?の処理
t0 = CurrentTick(); //タイ...
while(CurrentTick()-t0 < 1000) //?の処...
{
line_trace(SENSOR_1);
}
if (intersection_count ==2) //2回め...
{
RotateMotor(OUT_AB,SPEED_Slow,500); ...
while(SensorUS(S2)<=20) ...
{
OnRevSync(OUT_AB,40,0); ...
}
arm_lock(); ...
//start pitagora ; ...
}
}
else if (intersection_count ==6 ) ...
{
turn_l_intersection();
t0 = CurrentTick();
while(CurrentTick()-t0 < 1500) ...
{
line_trace(SENSOR_1);
}
Off(OUT_AB); ...
OnRevSync(OUT_AB,40,0);
arm_unlock();
Wait(1500);
Off(OUT_ABC);
break; ...
}
t0 = CurrentTick();
}
}
*感想 [#x05fde0b]
一回目の反省を生かして、処理ごとにサブルーチン(pythonだ...
ブロック化のため、処理部分を作ってしまえば、あとはそのブ...
終了行:
[[2016b/Member]]&br;
目次&br;
#contents
*課題について [#wf7938bc]
&ref(2016b/Mission2/2016b-mission2.png,50%,マップ);
&br;
今回の目標は「A,P,Q,R,P,S,D」のルートを通りDにボールをシ...
*機体について [#d4e5d54f]
今回の機体の制作には、いかにボールを捕まえる機構に入れる...
**機体の全体像 [#z7e1c6b3]
&ref(2016b/Member/pen/Mission2/全体像.jpeg,50%,全体像);
&br;
***ボールの検出と取得の機構 [#u46aaf07]
&ref(2016b/Member/pen/Mission2/アーム.jpeg,50%);
&br;
先端に超音波センサーを付けているため、テコの原理のように...
***ライントレース部分(下半身) [#r192e8f3]
&ref(2016b/Member/pen/Mission2/下半身1.jpeg,50%);
&ref(2016b/Member/pen/Mission2/下半身2.jpeg,50%);
&ref(2016b/Member/pen/Mission2/前輪.jpeg,50%);
&br;
ライントレース部分では、ほとんど左右対称に設計してありま...
*プログラムについて [#j535e444]
**プログラムの解説 [#pbb32be3]
***ライントレースの処理 [#g8518f00]
このプログラムは、「黒、黒に近い、白に少し近い、白に近い...
***交差点の検出 [#xe8b6c3f]
交差点の検出には、「どの反射率から判定するか」、「どれぐ...
よって、反射率が低いときに少ない時間ライトセンサーがいる...
***ボールの検出 [#wb2100f0]
ボールの検出には、超音波センサーを利用しました。超音波セ...
実際に、本機の超音波センサーで地面を見た時は12cm程ですが...
今回はそのような、正確な値が返ってこないことを利用して、...
&ref(2016b/Member/pen/Mission2/超音波センサー.jpeg,50%);
***交差点の処理 [#b34a19fd]
交差点では、交差点であることの判別に時間を使って処理をし...
&ref(2016b/Member/pen/Mission2/kousatenn.jpeg,50%,交差点...
&ref(2016b/Member/pen/Mission2/kousatenn_1.jpeg,50%,交差...
***シュートの処理 [#v00cde94]
5個目の交差点(S)を通過後、Dに向けてライントレースを一定...
***ボール取得のメロディ [#v137c818]
ピタゴラスイッチを入れました。ですが、発表までに何処で流...
**プログラムの流れ [#mea78a76]
+スタート地点から前進する(枠から光センサーを出す)
+ライントレースを数秒交差点判定無しで行う
+Pまで行き交差点で直進する
+Qでボールを取り2,3の作業をSに行くまで続ける
+DQ間のラインにライントレースで同調し、慣性によってシュート
**本文 [#x06b00a6]
#define THRESHOLD 45 //白と黒の中間の反射率
#define SPEED_Fast 60 // 速いスピード
#define SPEED_Slow 50 // 遅いスピード
#define OnLR(speedR,speedL) OnRev(OUT_A,speedR);OnRev(OU...
/*
task pitagora() //ボールを取ったときのメドレー
{
//while(true)
//{
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1568,140);
Wait(160);
PlayTone(1480,130);
Wait(300);
PlayTone(1175,130);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(988,130);
Wait(150);
PlayTone(880,140);
Wait(310);
PlayTone(988,130);
Wait(150);
PlayTone(1046,140);
Wait(310);
PlayTone(1109,130);
Wait(150);
PlayTone(1175,140);
Wait(460);
PlayTone(1175,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(2093,140);
Wait(160);
PlayTone(1975,130);
Wait(300);
PlayTone(1568,140);
Wait(160);
PlayTone(1760,130);
Wait(300);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(988,130);
Wait(150);
PlayTone(880,440);
Wait(460);
PlayTone(1318,130);
Wait(310);
PlayTone(1318,130);
Wait(150);
PlayTone(1175,440);
Wait(770);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1568,140);
Wait(160);
PlayTone(1480,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,130);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(2093,130);
Wait(150);
PlayTone(1975,140);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1760,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1046,130);
Wait(150);
PlayTone(1175,130);
Wait(300);
PlayTone(1046,140);
Wait(160);
PlayTone(1175,130);
Wait(300);
PlayTone(1397,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1046,140);
Wait(160);
PlayTone(1175,130);
Wait(300);
PlayTone(932,130);
Wait(160);
PlayTone(1046,130);
Wait(300);
PlayTone(932,130);
Wait(150);
PlayTone(1046,140);
Wait(310);
PlayTone(1244,130);
Wait(150);
PlayTone(1175,140);
Wait(310);
PlayTone(1046,130);
Wait(150);
PlayTone(988,140);
Wait(310);
PlayTone(880,130);
Wait(150);
PlayTone(784,1050);
Wait(1380);
PlayTone(1397,440);
Wait(460);
PlayTone(1318,130);
Wait(300);
PlayTone(1318,140);
Wait(160);
PlayTone(1480,130);
Wait(150);
PlayTone(1318,130);
Wait(150);
PlayTone(1480,140);
Wait(160);
PlayTone(1568,440);
Wait(460);
PlayTone(1175,130);
Wait(300);
PlayTone(988,130);
Wait(160);
PlayTone(1046,130);
Wait(300);
PlayTone(1046,130);
Wait(150);
PlayTone(1175,140);
Wait(160);
PlayTone(1109,130);
Wait(150);
PlayTone(1175,130);
Wait(150);
PlayTone(988,440);
Wait(770);
PlayTone(1397,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1318,130);
Wait(150);
PlayTone(1480,130);
Wait(150);
PlayTone(1318,140);
Wait(160);
PlayTone(1480,130);
Wait(150);
PlayTone(1568,440);
Wait(460);
PlayTone(1175,130);
Wait(310);
PlayTone(988,130);
Wait(150);
PlayTone(1046,130);
Wait(310);
PlayTone(1046,130);
Wait(150);
PlayTone(1175,130);
Wait(150);
PlayTone(1109,130);
Wait(150);
PlayTone(1175,140);
Wait(160);
PlayTone(988,440);
Wait(760);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,140);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1568,130);
Wait(150);
PlayTone(1480,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(300);
PlayTone(1568,140);
Wait(160);
PlayTone(1480,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,140);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(1175,130);
Wait(160);
PlayTone(1318,130);
Wait(300);
PlayTone(2093,130);
Wait(150);
PlayTone(1975,140);
Wait(460);
PlayTone(1568,140);
Wait(1230);
// }
//}
//task pitagora_owari()
//{
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(1175,130);
Wait(150);
PlayTone(1318,130);
Wait(310);
PlayTone(2093,130);
Wait(150);
PlayTone(1975,130);
Wait(460);
PlayTone(1568,280);
Wait(300);
//}
}
*/
sub line_trace(int sensor_light_lv) //ライントレースの...
{
if (sensor_light_lv < THRESHOLD-8)
{
OnRev(OUT_B,SPEED_Fast);
OnRev(OUT_A,-SPEED_Fast);
}
else if (sensor_light_lv < THRESHOLD-5)
{
OnRev(OUT_B,SPEED_Slow);
}
else if (sensor_light_lv < THRESHOLD +5)
{
OnRev(OUT_AB,50);
}
else if (sensor_light_lv < THRESHOLD+8)
{
OnRev(OUT_A,SPEED_Slow);
}
else
{
OnRev(OUT_A,SPEED_Fast);
OnRev(OUT_B,-SPEED_Fast);
}
}
sub go_forward_intersection() //交差点を通過する?の操作
{
OnRev(OUT_AB,SPEED_Slow);
Wait(410);
Off(OUT_AB);
}
sub turn_r_intersection() //交差点の右に車体を向かせる
{
OnLR(60,-60);
Wait(450);
}
sub turn_l_intersection() // 交差点の左に車体を向かせる
{
OnLR(-60,60);
Wait(450);
} //ボールを取る動作
sub arm_lock()
{
Off(OUT_ABC);
OnRev(OUT_AB,25);
OnFwd(OUT_C,-12);
Wait(3200);
Off(OUT_ABC);
}
sub arm_unlock() //アームを上げ、ボールを自...
{
OnFwd(OUT_C,30);
}
long intersection_judgment(long t0) //Sensorの値...
{
if (SENSOR_1 > 34)
{
t0 = CurrentTick();
}
return t0 ;
}
task main()
{
SetSensorLight(S1); // ライトセンサーの...
SetSensorLowspeed(S2); //超音波センサーの...
int intersection_count = 0; //交差点のカウント...
int count_look=0; //ボールを掴んでい...
long t0 = CurrentTick(); //時間を記憶する変...
RotateMotor(OUT_AB,SPEED_Slow,-1000); //スタート...
while(CurrentTick()-t0 < 6000) //前進から6...
{
line_trace(SENSOR_1); //ライント...
}
t0 = CurrentTick(); // 交差点の...
while(true)
{
//NumOut(0,0,SensorUS(S2) , true);
while(CurrentTick()-t0 < 410) //指定し...
{
line_trace(SENSOR_1);
t0=intersection_judgment(t0);
}
PlaySound(SOUND_UP); //ルー...
Off(OUT_AB); //車体...
Wait(1000);
intersection_count +=1; //交差...
if (intersection_count <=5 ) //交差...
{
turn_r_intersection(); //?の処理
go_forward_intersection(); //?の処理
t0 = CurrentTick(); //タイ...
while(CurrentTick()-t0 < 1000) //?の処...
{
line_trace(SENSOR_1);
}
if (intersection_count ==2) //2回め...
{
RotateMotor(OUT_AB,SPEED_Slow,500); ...
while(SensorUS(S2)<=20) ...
{
OnRevSync(OUT_AB,40,0); ...
}
arm_lock(); ...
//start pitagora ; ...
}
}
else if (intersection_count ==6 ) ...
{
turn_l_intersection();
t0 = CurrentTick();
while(CurrentTick()-t0 < 1500) ...
{
line_trace(SENSOR_1);
}
Off(OUT_AB); ...
OnRevSync(OUT_AB,40,0);
arm_unlock();
Wait(1500);
Off(OUT_ABC);
break; ...
}
t0 = CurrentTick();
}
}
*感想 [#x05fde0b]
一回目の反省を生かして、処理ごとにサブルーチン(pythonだ...
ブロック化のため、処理部分を作ってしまえば、あとはそのブ...
ページ名: