2006a/C2/課題3左


光源を見失った時には明るさに比例した周波数の音を出しながら旋回して光源を探す

カウンタ784
ロボティクス入門ゼミ
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

int touch;

task music(){
    int tone;
    tone = (SENSOR_1 + SENSOR_3) / 2;
    while(1){
        if((tone <= 20) && (tone < 23)){
            PlayTone(Do,5); Wait(10);
        }else if((tone <= 23) && (tone < 26)){
            PlayTone(Re,5); Wait(10);
        }else if((tone <= 26) && (tone < 29)){
            PlayTone(Mi,5); Wait(10);
        }else if((tone <= 29) && (tone < 32)){
            PlayTone(Fa,5); Wait(10);
        }else if((tone <= 32) && (tone < 35)){
            PlayTone(So,5); Wait(10);
        }else if((tone <= 35) && (tone < 38)){
            PlayTone(Ra,5); Wait(10);
        }else if((tone <= 38) && (tone < 41)){
            PlayTone(Si,5); Wait(10);
        }else if((tone <= 41) && (tone < 44)){
            PlayTone(Do2,5); Wait(10);
        }
    }
}

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{
            stop music;
            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){
    if((SENSOR_1 >= touch) && (SENSOR_3 >= touch)){
        OnFwd(OUT_A+OUT_C);
    }else if((SENSOR_1 >= touch) && (SENSOR_3 < touch)){
        OnFwd(OUT_C);
        OnRev(OUT_A);
    }else if((SENSOR_1 < touch) && (SENSOR_3 >= touch)){
        OnFwd(OUT_A);
        OnRev(OUT_C);
    }
}

プログラム説明

音の変化

(tone <= 20) && (tone < 23)ドの音(Do)
(tone <= 23) && (tone < 26)レの音(Re)
(tone <= 26) && (tone < 29)ミの音(Mi)
(tone <= 29) && (tone < 32)ファの音(Fa)
(tone <= 32) && (tone < 35)ソの音(So)
(tone <= 35) && (tone < 38)ラの音(Ra)
(tone <= 38) && (tone < 41)シの音(Si)
(tone <= 41) && (tone < 44)ドの音(Do2)

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



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

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