- 追加された行はこの色です。
- 削除された行はこの色です。
[[2006b/A1/課題3左]]
*センサー1個のプログラム [#s70e2974]
#define Turn_Time 360
#define Do 523
#define Turn_Time 360 //最初の旋回の時間。
#define Do 523 //音の定義。
#define Re 587
#define Mi 659
#define Fa 698
#define Sol 784
#define Ra 880
task play_music()
task play_music() //きらきら星
{
while(true)
{
PlayTone(Do,60); Wait(65);
PlayTone(Do,60); Wait(65);
PlayTone(Sol,60); Wait(65);
PlayTone(Sol,60); Wait(65);
PlayTone(Ra,60); Wait(65);
PlayTone(Ra,60); Wait(65);
PlayTone(Sol,120); Wait(125);
PlayTone(Fa,60); Wait(65);
PlayTone(Fa,60); Wait(65);
PlayTone(Mi,60); Wait(65);
PlayTone(Mi,60); Wait(65);
PlayTone(Re,60); Wait(65);
PlayTone(Re,60); Wait(65);
PlayTone(Do,120); Wait(125);
PlayTone(Sol,60); Wait(65);
PlayTone(Sol,60); Wait(65);
PlayTone(Fa,60); Wait(65);
PlayTone(Fa,60); Wait(65);
PlayTone(Mi,60); Wait(65);
PlayTone(Mi,60); Wait(65);
PlayTone(Re,120); Wait(125);
PlayTone(Sol,60); Wait(65);
PlayTone(Sol,60); Wait(65);
PlayTone(Fa,60); Wait(65);
PlayTone(Fa,60); Wait(65);
PlayTone(Mi,60); Wait(65);
PlayTone(Mi,60); Wait(65);
PlayTone(Re,120); Wait(125);
PlayTone(Do,60); Wait(65);
PlayTone(Do,60); Wait(65);
PlayTone(Sol,60); Wait(65);
PlayTone(Sol,60); Wait(65);
PlayTone(Ra,60); Wait(65);
PlayTone(Ra,60); Wait(65);
PlayTone(Sol,120); Wait(125);
PlayTone(Fa,60); Wait(65);
PlayTone(Fa,60); Wait(65);
PlayTone(Mi,60); Wait(65);
PlayTone(Mi,60); Wait(65);
PlayTone(Re,60); Wait(65);
PlayTone(Re,60); Wait(65);
PlayTone(Do,120); Wait(125);
Wait(100);
}
}
task main()
{
SetSensor(SENSOR_1,SENSOR_LIGHT);
SetSensor(SENSOR_2,SENSOR_LIGHT);
int light_max=0;
int time_max;
SetSensor(SENSOR_1,SENSOR_LIGHT); //光センサーの定義。
SetSensor(SENSOR_2,SENSOR_LIGHT); //光センサーの定義。
int light_max=0; //変数(光の値)の定義
int time_max; //変数(回転時の時間)の定義
ClearTimer(0);
OnFwd(OUT_A);
OnFwd(OUT_A); //ここで旋回。
OnRev(OUT_C);
start play_music;
while(FastTimer(0) < Turn_Time){
start play_music; //回っている間にきらきら星。
while(FastTimer(0) < Turn_Time){ //この間に、光の最大値と、その時間をはかる。
if(SENSOR_1 > light_max){
light_max=SENSOR_1;
time_max=FastTimer(0);
}
}
stop play_music;
OnFwd(OUT_C);
stop play_music; //きらきら星ストップ。
OnFwd(OUT_C); //ここで回転して光の下へ。
OnRev(OUT_A);
Wait(Turn_Time-time_max);
while(true){
while(true){ //光の最大値によって分岐し光についていく。
if(light_max>60){
if(SENSOR_1>light_max-20){
OnFwd(OUT_A+OUT_C);}
else{
OnFwd(OUT_A);
OnRev(OUT_C);}
}
if(45<=light_max<=60){
if(SENSOR_1>light_max-5){
OnFwd(OUT_A+OUT_C);}
else{
OnFwd(OUT_A);
OnRev(OUT_C);}
}
else{
if(SENSOR_1>light_max){
OnFwd(OUT_A+OUT_C);}
else{
OnFwd(OUT_A);
OnRev(OUT_C);}
}
}
}