ブザー音の変更 (17)


こんにちは立野です。

今日はstep4のブザーの音を変えていきたいたいと思いますが昨日は音を変えるところを理解できないで終わってしまってブログ更新ができませんでした、、

では、最初にstep4にもとからある文(下記)

 

#define FREQ_C 523 //ドの周波数
#define FREQ_D 587 //レの周波数
#define FREQ_E 659 //ミの周波数

の#defineとFREQの意味を調べていきますが、step4のmacro.hの中にに入っている

#define SET_BUZZER_FREQ(f) MTU22.TGRB=(unsigned short)(24000000/(f));MTU22.TGRA=(unsigned short)(12000000/(f)) //ブザーの発振周波数を算出して、設定

とありますがmacro.hにあらかじめ周波数を設定しておき、今回のマイコンは48MH2、MTUは25MH2までしか対応できないので、今回はTGRB(周波数の幅)を24MH2にしてTGRAを12MH2に設定しておきます。

その後は、ド・レ・ミ、、、、、ドの周波数は決まっているので、今回は2倍のドだったら、ド(262→524)に設定を入れ替えてコンパイルしました。

#define FREQ_C 523 //ドの周波数
#define FREQ_D 587 //レの周波数
#define FREQ_E 659 //ミの周波数
#define FREQ_F 700 //ファの周波数
#define FREQ_G 784 //ソの周波数
#define FREQ_A 880 //ラの周波数
#define FREQ_B 988 //シの周波数
#define FREQ_C2 1046 //ドの周波数

void exec_by_mode(int mode) //モード番号に従って実行する
{
switch(mode)
{
case 1:
SET_BUZZER_FREQ(FREQ_C); //ブザーの周波数をドに設定
ENABLE_BUZZER; //ブザーを発振させる
wait_ms(1000); //1秒間 ドの音を鳴らす
DISABLE_BUZZER; //ブザーの発振を停止させる
break;

case 2:
SET_BUZZER_FREQ(FREQ_D); //ブザーの周波数をレに設定
ENABLE_BUZZER; //ブザーを発振させる
wait_ms(1000); //1秒間 レの音を鳴らす
DISABLE_BUZZER; //ブザーの発振を停止させる
break;

case 3:
SET_BUZZER_FREQ(FREQ_E); //ブザーの周波数をミに設定
ENABLE_BUZZER; //ブザーを発振させる
wait_ms(1000); //1秒間 ミの音を鳴らす
DISABLE_BUZZER; //ブザーの発振を停止させる
break;

case 4:
SET_BUZZER_FREQ(FREQ_F); //ブザーの周波数をドに設定
ENABLE_BUZZER; //ブザーを発振させる
wait_ms(1000); //1秒間 ドの音を鳴らす
DISABLE_BUZZER; //ブザーの発振を停止させる
break;

case 5:
SET_BUZZER_FREQ(FREQ_G); //ブザーの周波数をドに設定
ENABLE_BUZZER; //ブザーを発振させる
wait_ms(1000); //1秒間 ドの音を鳴らす
DISABLE_BUZZER; //ブザーの発振を停止させる
break;

case 6:
SET_BUZZER_FREQ(FREQ_A); //ブザーの周波数をドに設定
ENABLE_BUZZER; //ブザーを発振させる
wait_ms(1000); //1秒間 ドの音を鳴らす
DISABLE_BUZZER; //ブザーの発振を停止させる
break;

case 7:
SET_BUZZER_FREQ(FREQ_B); //ブザーの周波数をドに設定
ENABLE_BUZZER; //ブザーを発振させる
wait_ms(1000); //1秒間 ドの音を鳴らす
DISABLE_BUZZER; //ブザーの発振を停止させる
break;

case 8:
SET_BUZZER_FREQ(FREQ_C2); //ブザーの周波数をドに設定
ENABLE_BUZZER; //ブザーを発振させる
wait_ms(1000); //1秒間 ドの音を鳴らす
DISABLE_BUZZER; //ブザーの発振を停止させる
break;

こんな感じになりましたがまだ続けて音を流すことができないので、動画はまた後にYoutubeに投稿します。


Posted in Pi:Co Classic2 製作記