- 追加された行はこの色です。
- 削除された行はこの色です。
[[2014b/Member]]
目次(作成途中)
目次(編集中)
#contents
*プログラム [#v47f2d49]
#define THRESHOLD 45
#define SPEED_H 50
#define SPEED_L 25
#define OnRL(speedR,speedL) OnFwd(OUT_B,speedR);OnFwd(OUT_C,speedL);
#define go_forward OnRL(SPEED_H,SPEED_H);
#define turn_left1 OnRL(SPEED_L,-SPEED_L);
#define turn_left0 OnRL(SPEED_L,0);
#define turn_right0 OnRL(0,SPEED_L);
#define turn_right1 OnRL(-SPEED_L,SPEED_L);
#define STEP 1
#define nMAX 150
#define short_break Off(OUT_BC);Wait(1000);
#define CROSS_TIME 200
#define closs_line OnRL(SPEED_L,SPEED_L);Wait(CROSS_TIME);short_break;
task main()
{
SetSensorLight(S3);
int nOnline=0,closs_number=1;
int nOnline=0;
int closs_number=1; //交差点の番号(何回目の交差点か)
while(true){
while(nOnline < nMAX){
if(SENSOR_3 < THRESHOLD-15){ //ほぼ黒線上
turn_left1;
PlaySound(SOUND_LOW_BEEP);
PlaySound(SOUND_LOW_BEEP); //低いビープ音を鳴らす
nOnline++;
}else{
if(SENSOR_3 < THRESHOLD-7){ //黒に近い
turn_left0;
}else if(SENSOR_3 < THRESHOLD+7){ //中間
go_forward;
}else if(SENSOR_3 < THRESHOLD+15){ //白に近い
turn_right0;
}else{ //ほぼ白
}else{ //ほとんど白
turn_right1;
PlaySound(SOUND_LOW_BEEP);
PlaySound(SOUND_LOW_BEEP); //低いビープ音を鳴らす
}
nOnline=0;
}
Wait(STEP);
}
/*交差点であるとき*/
if(closs_number != 3){
if(closs_number != 3){ //3回目の交差点のとき、曲がる(回数はとりあえず)
short_break;
turn_right1;Wait(nMAX*STEP);
closs_line;
nOnline=0;
nOnline=0; //回数を1増やす
closs_number++;
closs_number++; //交差点の番号を1増やす
PlaySound(SOUND_CLICK);
PlaySound(SOUND_CLICK); //クリック音を鳴らす
}
else
else //そうでないとき
{
nOnline=0;
nOnline=0; //回数をリセット
closs_number++;
closs_number++; //交差点の番号を1増やす
PlaySound(SOUND_UP);
PlaySound(SOUND_UP); //「テレレー↑」という音をならす
}
}
}