4 曲を奏でてみよう

ブザーを鳴らす



新しくPipoというプロジェクトを追加します。(忘れた人はこちらへ

ブザーを鳴らすメソッドは、BrainPad.Buzzer.PlayFrequencyという名前のメソッドで、引数に周波数を与えます。
ピポる
        void main()
        {
            BrainPad.Buzzer.PlayFrequency(440);
            CPU.delay(100);
            BrainPad.Buzzer.PlayFrequency(880);
            CPU.delay(100);
            BrainPad.Buzzer.Stop();
        }
 1 
 2 
 3 ブザーを440Hz(ラの音)で鳴らす
 4 あるいは、BrainPad.Wait.Milliseconds(100.0);
 5 ブザーを880Hz(上のラの音)で鳴らす
 6 あるいは、Thread.Sleep(100);
 7 ブザーを止める。
 8 

注意:ゼロHzとかマイナスの周波数を指定することは出来ません。

ドレミを奏でてみよう

新しくDoremiSoundというプロジェクトを追加します。(忘れた人はこちらへ

音階を鳴らす
        const int C = (int)BrainPad.Buzzer.Note.C, D = (int)BrainPad.Buzzer.Note.D;
        const int E = (int)BrainPad.Buzzer.Note.E, F = (int)BrainPad.Buzzer.Note.F;
        const int G = (int)BrainPad.Buzzer.Note.G, A = (int)BrainPad.Buzzer.Note.A * 2;
        const int B = (int)BrainPad.Buzzer.Note.B*2, c = (int)BrainPad.Buzzer.Note.C * 2;
        int[] score = { C, 16, D, 16, E, 16, F, 16, G, 16, A, 16, B, 16, c, 16 };
        //             ド     レ     ミ     ファ   ソ     ラ     シ     ド
        private void main()
        {
            while (true)
            {
                for(int i=0; i<score.Length; i+=2)
                {
                    BrainPad.Buzzer.PlayFrequency(score[i]);
                    Thread.Sleep(score[i+1]*30);
                }
            }
        }
 1 
 2 
 3 
 4 
 5 音符データ
 6 音程、長さ
 7 
 8 
 9 永久ループ
10 
11 始めから最後まで2つ毎に
12 取り出す
13 偶数番目は音程
14 基数番目は長さ
15 
16 
17 
カエルの合唱を奏でてみよう
新しくKaeruというプロジェクトを追加します。(忘れた人はこちらへ

下記の楽譜を参照して曲を作ってください(主旋律のみ)。また、ボタンを押すと開始するように機能を上げてみてください。

合唱にする方法
新しくKaeru2というプロジェクトを追加します。(忘れた人はこちらへ

PWMクラスのオブジェクトを二つ利用すると、同時に二音を出すことができます。
 ここで用いるPWMクラスのspeaker2で用いているピンは、I2Cの利用で使われているので、これを使用不能にしておかないと何も起こりません。また、I2Cを利用している加速度センサのライブラリも使用不能にしなければいけません。BrainPad.csの797行目あたりの、「public static class Accelerometer」の先頭に「/*」を、850行目あたりの「 /// <summary> 」の先頭に「*/」を入れてAccelerometerクラスを全部コメントにします。次に、1768行目あたりの「private class I2C」の先頭に「/*」を、1816行目あたり(一番最後の行)の、
        }
    }
}
の最後の「 } 」の前に「*/」を入れてI2Cクラスを全部コメントにします。
新しいプロジェクトを作ると大元からファイルなどをコピーしてくるので、BrainPad.csを修正しても他のプロジェクトには影響はありません。

同時に音を出す
        private void main()
        {
            PWM speaker = new PWM(Cpu.PWMChannel.PWM_5, 1.0, 0.5, false);  // E10
            PWM speaker2 = new PWM((Cpu.PWMChannel)11,  1.0, 0.5, false);  // E13

            speaker.Frequency = 1000;   // 1つめの音は1kHz
            speaker.Start();            // 一つ目の音を出す
            CPU.delay(1000);            // 1秒待つ
            speaker2.Frequency=1500;    // 2つ目の音を1.5kHzに設定
            speaker2.Start();           // 2つ目の音を出す
            CPU.delay(1000);            //二つ目の音を重ねる
            speaker.Stop();             // 1つ目の音を止める
            CPU.delay(1000);            // 二つ目の音だけになる
            speaker2.Stop();            // 2つ目の音も止める
            speaker.Dispose();
            speaker2.Dispose();
        }
 1 
 2 
 3 拡張コネクタ
 4 Expansion headers
 5 Mikro Bus
 6 
 7 
 8 
 9 
10 
11 
12 
13 
14 
15 
16 
17 


スピーカーとして圧電スピーカを用います。
    
このプログラムは、Expansion HeadersのE10とE13から出力されます。各々220Ωの抵抗を介してスピーカに接続します。

BrainPadの左上にあるコネクタ。上図の機能を全て書ききれていません。