2006a/C2/課題3左


光源を見失っていないときにはある曲を演奏し、見失った時には別の曲を演奏しながら光源を探すプログラム

カウンタ787
ロボティクス入門ゼミ
2006a/C2/課題3左に戻る

プログラム内容

#define timer 200
//music nomber
#define Do 523
#define Re 587
#define Mi 659
#define Fa 698
#define So 784
#define Ra 880
#define Si 988
#define Do2 1047
#define Do2f 1109
#define Re2 1175
#define Mi2 1319
#define Fa2 1397
#define So2 1568
#define Ra2 1760
int touch;
task music(){     //音楽部分
    while(1){
    if((SENSOR_1 < touch) && (SENSOR_3 < touch)){     //センサーがともに閾値を下回った時
        PlayTone(Ra,5); Wait(10);
        PlayTone(So,5); Wait(10);
        PlayTone(Do,15); Wait(20);
        PlayTone(Do2,5); Wait(20);
        PlayTone(Do2,5); Wait(20);

        PlayTone(Ra,5); Wait(10);
        PlayTone(So,5); Wait(10);
        PlayTone(Do,15); Wait(15);
        PlayTone(Do2,5); Wait(20);
        PlayTone(Do2,5); Wait(20);

        PlayTone(Ra,5); Wait(10);
        PlayTone(So,5); Wait(10);
        PlayTone(Do,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(So,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        PlayTone(Si,5); Wait(20);
        PlayTone(Si,5); Wait(20);

        PlayTone(Ra,5); Wait(10);
        PlayTone(So,5); Wait(10);
        PlayTone(Re,15); Wait(20);
        PlayTone(Si,5); Wait(20);
        PlayTone(Si,5); Wait(20);

        PlayTone(Ra,5); Wait(10);
        PlayTone(So,5); Wait(10);
        PlayTone(Re,15); Wait(20);
        PlayTone(Si,5); Wait(20);
        PlayTone(Si,5); Wait(20);

        PlayTone(Ra,5); Wait(10);
        PlayTone(So,5); Wait(10);
        PlayTone(Re,15); Wait(20);
        PlayTone(Si,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        PlayTone(Si,15); Wait(20);
        PlayTone(Do2,5); Wait(20);
        PlayTone(Do2,5); Wait(20);
        PlayTone(Do2,5); Wait(20);
    }else if((SENSOR_1 >= touch) || (SENSOR_3 >= touch)){     //センサーのどちらか一方が閾値を超えた時
        PlayTone(So,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        PlayTone(Si,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        PlayTone(So,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        
        PlayTone(Do2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        PlayTone(So,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        
        PlayTone(Do2,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        PlayTone(So,15); Wait(20);
        PlayTone(Ra,15); Wait(20);

        PlayTone(Do2,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        PlayTone(So,15); Wait(20);
        PlayTone(Ra,25); Wait(40);
        
        PlayTone(Re2,15); Wait(20);
        PlayTone(Re2,15); Wait(20);
        PlayTone(Re2,15); Wait(20);
        PlayTone(Re2,15); Wait(20);
        PlayTone(Re2,15); Wait(20);
        PlayTone(Do2f,15); Wait(20);
        PlayTone(Do2f,15); Wait(20);
        PlayTone(Do2,75); Wait(100);
        
        PlayTone(Mi2,25); Wait(30);
        PlayTone(Re2,15); Wait(20);
        PlayTone(Fa2,75); Wait(90);
        
        PlayTone(Mi2,15); Wait(20);
        PlayTone(Do2,15); Wait(20);
        PlayTone(Mi2,15); Wait(20);
        PlayTone(Ra,75); Wait(90);
        
        PlayTone(Re2,15); Wait(20);
        PlayTone(Si,15); Wait(20);
        PlayTone(Ra,15); Wait(20);
        PlayTone(So,75); Wait(90);
        
        PlayTone(Re2,15); Wait(20);
        PlayTone(Re2,15); Wait(20);
        PlayTone(Mi2,15); Wait(20);
        PlayTone(So2,75); Wait(90);
        
        PlayTone(Mi2,15); Wait(20);
        PlayTone(Ra2,15); Wait(20);
        PlayTone(So2,15); Wait(20);
        PlayTone(Re2,75); Wait(90);
    }
    }
}

task main(){
    SetSensor(SENSOR_1,SENSOR_LIGHT);
    SetSensor(SENSOR_3,SENSOR_LIGHT);
    touch = (SENSOR_1 + SENSOR_3) * 3 / 5;
    while(1){
        if((SENSOR_1 < touch) && (SENSOR_3 < touch)){
            if(SENSOR_1 > SENSOR_3){
                trun_r();
            }else if(SENSOR_1 < SENSOR_3){
                trun_l();
            }
        }else if((SENSOR_1 >= touch) || (SENSOR_3 >= touch)){
            straight();
        }
    }
}

void trun_r(void){
    start music;
    OnFwd(OUT_C);
    OnRev(OUT_A);
    until((SENSOR_1 >= touch) || (SENSOR_3 >= touch));
}

void trun_l(void){
    start music;
    OnFwd(OUT_A);
    OnRev(OUT_C);
    until((SENSOR_1 >= touch) || (SENSOR_3 >= touch));
}

void straight(void){
    start music;
    OnFwd(OUT_A+OUT_C);
    until((SENSOR_1 < touch) && (SENSOR_3 < touch));
}

プログラム紹介


コメント・感想・アドバイス



ロボティクス入門ゼミ
2006a/C2/課題3左に戻る

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-14 (金) 16:36:34