- 追加された行はこの色です。
- 削除された行はこの色です。
[[2015a/Member]]
*はじめに [#x9eca22c]
今回の課題は、交差点を識別させることができず、思い通りにロボットを動かせませんでした。
*課題について [#df440be5]
下の図のようなコースを各チームで作成し、「ミッション」を遂行するためのロボットを作成せよ。
#ref(./2015a-mission2.png,50%)
私はC→Aの担当をした。
*プログラム [#t129c874]
**光をたどる [#g81cbe0a]
まず、黒と白の境目をたどるようにした。
#define THRESHOLD 45
#define SPEED 30
#define turn_left OnFwd(OUT_B,SPEED);Off(OUT_C);
#define turn_right Off(OUT_B);OnFwd(OUT_C,SPEED);
#define STEP 5
**マクロ [#p8f3a693]
#define hikari 50 //光センサー基準値
#define SPEED1 55
#define SPEED 25
#define turn_left OnFwd(OUT_B,SPEED);OnRev(OUT_C,SPEED); //左に旋回
#define TURN_LEFT OnFwd(OUT_B,SPEED); //左折
#define go_forward OnFwd(OUT_BC,SPEED1); //進む
#define turn_right OnFwd(OUT_C,SPEED);OnRev(OUT_B,SPEED); //右に旋回
#define TURN_RIGHT OnFwd(OUT_C,SPEED); //右折
#define armdown OnFwd(OUT_A,50);Wait(500);Off(OUT_A);Wait(300); //アームを降ろす
#define downtime 10000
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL);
#define STEP 2
task main()
{
**線をたどる [#h9820417]
task main(){
SetSensorLight(S3);
while(true){
if(SENSOR_3<THRESHOLD){
turn_left;
}else{
turn_right;
while(true){
if(SENSOR_3<hikari -7){
turn_left;
}else{
if(SENSOR_3<hikari -3){
TURN_LEFT;
}else if(SENSOR_3<hikari +3){
go_forward;
}else if(SENSOR_3<hikari +10){
TURN_RIGHT;
}else{
turn_right;
}
}
Wait(STEP);
}
}
}
**交差点 [#fec16bc2]
**交差点 [#pd6bdf7f]
sub cross_line(long t)
{
int b=0;
while(b<CROSS_TIME)
{
OnRL(SPEED,SPEED);
Wait(STEP);
if(CurrentTick()-t<=downtime+1.0 && downtime<=CurrentTick()-t)
{
armdown;
}
b++;
}
}
*まとめ・反省 [#le0f139d]
まず、どのプログラムがどのような指示をしているのかを完全に理解できませんでした。そのため、交差点の識別やタイマー・カウンターの使用ができませんでした。
次回の課題はこの課題2の延長のようなので、それまでに理解できるところまではせめて理解しようと思います。