マイクロマウス製作五十日目


こんにちは!!

関東では梅雨も明けたみたいで、いよいよ夏本番です。
先日は、大学時代の友人と東京大神宮におまいりに行ってきました。
縁結びのご利益があるということで、女性の参拝客の方が大変多かったですw
どこもいろんな個性があって、寺社仏閣めぐり楽しいです^^

さて、記念すべき連載50回目の本日。
今日は今週末のマイクロマウス関西地区大会に向けてジェニちゃんをいじります。

関西地区大会エントリー時に、マウスのPRとして、 「ゴールしたら音楽が鳴ります!」
と、現段階でできてもないことを宣言してしまったので、メロディ作成です…!汗

demo_musicのソースファイルを作成し、関数化して迷路走行のプログラムに入れます♪
以下がプログラムの内容です。

#include "demo_music.h"
#include "portdef.h"
#include "iodefine.h"
#include "macro.h"

#define FREQ_C 400 //ドの周波数
#define FREQ_D 450 //レの周波数
#define FREQ_E 500 //ミの周波数
#define FREQ_F 525 //ファの周波数
#define FREQ_G 600 //ソの周波数
#define FREQ_A 675 //ラの周波数
#define FREQ_B 750 //シの周波数
#define FREQ_C2 800 //ド(高)の周波数
#define FREQ_D2 900 //レ(高)の周波数
#define FREQ_E2 1000 //ミ(高)の周波数
#define FREQ_F2 1050 //ファ(高)の周波数
#define FREQ_G2 1200 //ソ(高)の周波数
#define FREQ_A2 1350 //ラ(高)の周波数

#define FREQ_B2 712 //シの周波数
void demo_music(void)
{
	int i,j;
	for(i = 0; i < 1; i++) //1回繰り返し
	{
		SET_BUZZER_FREQ(FREQ_G); //ブザーの周波数をソに設定
		ENABLE_BUZZER; //ブザーを発振させる
		wait_ms(160); //160ms ソの音を鳴らす
		DISABLE_BUZZER; //ブザーの発振を停止させる
		wait_ms(60);
		SET_BUZZER_FREQ(FREQ_A); //ブザーの周波数をラに設定
		ENABLE_BUZZER; //ブザーを発振させる
		wait_ms(160); //160ms ラの音を鳴らす
		DISABLE_BUZZER; //ブザーの発振を停止させる
		wait_ms(150);
		SET_BUZZER_FREQ(FREQ_G); //ブザーの周波数をソに設定
		ENABLE_BUZZER; //ブザーを発振させる
		wait_ms(160); //160ms ソの音を鳴らす
		DISABLE_BUZZER; //ブザーの発振を停止させる
		wait_ms(60);
		SET_BUZZER_FREQ(FREQ_A); //ブザーの周波数をラに設定
		ENABLE_BUZZER; //ブザーを発振させる
		wait_ms(160); //160ms ラの音を鳴らす
		DISABLE_BUZZER; //ブザーの発振を停止させる
		wait_ms(150);
		SET_BUZZER_FREQ(FREQ_F2); //ブザーの周波数をファ(高)に設定
		ENABLE_BUZZER; //ブザーを発振させる
		wait_ms(160); //160ms ファ(高)の音を鳴らす
		DISABLE_BUZZER; //ブザーの発振を停止させる
		wait_ms(60);
		SET_BUZZER_FREQ(FREQ_E2); //ブザーの周波数をミ(高)に設定
		ENABLE_BUZZER; //ブザーを発振させる
		wait_ms(160); //160ms ミ(高)の音を鳴らす
		DISABLE_BUZZER; //ブザーの発振を停止させる
		wait_ms(320);
		SET_BUZZER_FREQ(FREQ_C2); //ブザーの周波数をド(高)に設定
		ENABLE_BUZZER; //ブザーを発振させる
		wait_ms(160); //160ms ド(高)の音を鳴らす
		DISABLE_BUZZER; //ブザーの発振を停止させる
	}
}

個人的に面白かったのは、周波数です。
音楽をやっていたのにそんなに音楽に詳しくない私…
周波数の数値を書き換えて鳴らして書き換えて鳴らして…と作っているのですが、
1オクターブあがったら、音階ごとの周波数の差が2倍になりました。なぜ??

何かわけがあるに違いない。

ちなみに、何の曲か気になる方がもしいらっしゃいましたら、上記を参考に推理してくださいw
実際に迷路走行させてみて実装できたことを確認しましたが、動画は機密にしておきます^^

さーて、せっかくがんばってメロディ作ったので、完走しないと♪
大会まで、もう少し。。


Posted in Pi:Co Classic製作記