このサンプルプログラムはメロディを演奏するプログラムです。 メロディデータはプログラムコードにデータテーブルとして記憶しています。 This sample program is a program that plays the melody. Melody data is stored as data tables in the program code. =video= {{http://www.youtube.com/watch?v=wX-QUprMvT0}}

Dependencies:   mbed Sound

メロディ出力Library のLPC1114FN28対応

https://www.youtube.com/watch?v=CDjyflSWb4Y&feature=c4-overview&list=UUBKFbjZziYG1M-dKWqTlUwA

LPC1768用に作成したメロディLibraryをLPC1114FN28に対応させました。
PWM周期を1[us]から10[us]にして、メロディ出力のためのタイマー割り込みも20[us]から40[us]にしました。(音質にはさほど影響は無いと感じました)

サンプルプログラムはLPC1768用ですので、LPC1114FN28で使用する場合は、main.cppの30行目をコメントアウトして、31行目を有効にして、コンパイルしてください。

Information

SoundLibraryExample_Melody_ProgramData
main.cpp

30行目 //Sound sound(p21, p23);  // LPC1768 p21(PwmOut), p23(DigitalOut)
31行目 Sound sound(dp1, dp2); // LPC1114FN28 dp1(PwmOut), dp2(DigitalOut)

スピーカはLCP1114FN28のdp1とdp2に接続してください。(とりあえずは電流制限抵抗は無くてもかまいません)

/media/uploads/suupen/lpc1114fn28-------.jpg

main.cpp

Committer:
suupen
Date:
2013-11-10
Revision:
2:fc37c5923b0c
Parent:
1:aa04f8cd7355

File content as of revision 2:fc37c5923b0c:

//=============================================
// Sound Library Example Program
//  This sample program will play a melody
//  Melody data for this program is set in the program as a data table.(DEMEKIN[])
// <schematic>
//
// <LPC1768>
//                                               /
//   mbed                 --------------      --/
//   p21(pwmOut)     -----| R:200[ohm] |-----|  |  speaker
//                        --------------     |  |
//                                           |  |
//   p23(DigitalOut) ------------------------|  |
//                                            --\
//                                               \
//
// <LPC1114FN28>
//                                               /
//   mbed                 --------------      --/
//   db1(pwmOut)     -----| R:200[ohm] |-----|  |  speaker
//                        --------------     |  |
//                                           |  |
//   db2(DigitalOut) ------------------------|  |
//                                            --\
//                                               \
//==============================================
#include "mbed.h"
#include "Sound.h"

Sound sound(p21, p23);  // LPC1768 p21(PwmOut), p23(DigitalOut)
//    Sound sound(dp1, dp2); // LPC1114FN28 dp1(PwmOut), dp2(DigitalOut)

// "demekin no uta" melody data
    const Sound::sound_t DEMEKIN[] =     {
        //  onkai,hatuon jikan[ms]
        //   hanon siji 0:b(flat)   1:tujo  2:#(sharp)
        //   |  C1 - B9 kan deno onkai(Gx ha 9x ni okikae te siji)  0xFF=end data
        //   |  |   time (1/1[ms]/count)
        //   |  |   |    envelope(yoin) (1/1 [ms]/count)
        //   |  |   |    |
        {1,0xC5,600,500},     // de
        {1,0xE5,600,500},     // me
        {1,0x95,600,500},     // kin
        {1,0x00,600,500},

        {1,0xC5,600,500},     // de
        {1,0xE5,600,500},     // me
        {1,0x95,600,500},     // kin
        {1,0x00,600,500},

        {1,0xC5,600,500},     // de
        {1,0xE5,600,500},     // me
        {1,0x95,600,500},     // kin
        {1,0x95,600,500},     // no
        {1,0x95,150,500},     // shi
        {1,0x00,900,500},
        {1,0xE5,750,500},     // po
        {1,0x00,450,500},

        {1,0xC5,600,500},     // de
        {1,0xE5,600,500},     // me
        {1,0x95,600,500},     // kin
        {1,0x00,600,500},

        {1,0xC5,600,500},     // de
        {1,0xE5,600,500},     // me
        {1,0x95,600,500},     // kin
        {1,0x00,600,500},

        {1,0x95,600,500},     // ju
        {1,0xE5,600,500},     // go
        {1,0xD5,600,500},     // n
        {1,0xC5,600,500},     // no
        {1,0xE5,150,500},     // shi
        {1,0x00,900,500},
        {1,0xC5,750,500},     // po
        {1,0x00,1350,500},

        {1,0xFF,1000,0},    // end

    };

   int main() {

        // Specifying the data to play melody
        sound.sound_enso((Sound::sound_t*)DEMEKIN);

        while(1) {
            if(sound.sound_enso() == false) {
                sound.sound_enso(true);
            }
            wait(10);
        }
    }