このサンプルプログラムはメロディを演奏するプログラムです。 メロディデータはプログラムコードにデータテーブルとして記憶しています。 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}}
メロディ出力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に接続してください。(とりあえずは電流制限抵抗は無くてもかまいません)
main.cpp@0:f773f5034b8b, 2011-11-20 (annotated)
- Committer:
- suupen
- Date:
- Sun Nov 20 09:43:45 2011 +0000
- Revision:
- 0:f773f5034b8b
- Child:
- 1:aa04f8cd7355
V1.0 2011/11/20
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 0:f773f5034b8b | 1 | //============================================= |
suupen | 0:f773f5034b8b | 2 | // Sound Library Example Program |
suupen | 0:f773f5034b8b | 3 | // This sample program will play a melody |
suupen | 0:f773f5034b8b | 4 | // Melody data for this program is set in the program as a data table.(DEMEKIN[]) |
suupen | 0:f773f5034b8b | 5 | // <schematic> |
suupen | 0:f773f5034b8b | 6 | // |
suupen | 0:f773f5034b8b | 7 | // / |
suupen | 0:f773f5034b8b | 8 | // mbed -------------- --/ |
suupen | 0:f773f5034b8b | 9 | // p21(pwmOut) -----| R:200[ohm] |-----| | speaker |
suupen | 0:f773f5034b8b | 10 | // -------------- | | |
suupen | 0:f773f5034b8b | 11 | // | | |
suupen | 0:f773f5034b8b | 12 | // p10(DigitalOut) ------------------------| | |
suupen | 0:f773f5034b8b | 13 | // --\ |
suupen | 0:f773f5034b8b | 14 | // \ |
suupen | 0:f773f5034b8b | 15 | //============================================== |
suupen | 0:f773f5034b8b | 16 | #include "mbed.h" |
suupen | 0:f773f5034b8b | 17 | #include "Sound.h" |
suupen | 0:f773f5034b8b | 18 | |
suupen | 0:f773f5034b8b | 19 | // "demekin no uta" melody data |
suupen | 0:f773f5034b8b | 20 | const Sound::sound_t DEMEKIN[] = { |
suupen | 0:f773f5034b8b | 21 | // onkai,hatuon jikan[ms] |
suupen | 0:f773f5034b8b | 22 | // hanon siji 0:b(flat) 1:tujo 2:#(sharp) |
suupen | 0:f773f5034b8b | 23 | // | C1 - B9 kan deno onkai(Gx ha 9x ni okikae te siji) 0xFF=end data |
suupen | 0:f773f5034b8b | 24 | // | | time (1/1[ms]/count) |
suupen | 0:f773f5034b8b | 25 | // | | | envelope(yoin) (1/1 [ms]/count) |
suupen | 0:f773f5034b8b | 26 | // | | | | |
suupen | 0:f773f5034b8b | 27 | {1,0xC5,600,500}, // de |
suupen | 0:f773f5034b8b | 28 | {1,0xE5,600,500}, // me |
suupen | 0:f773f5034b8b | 29 | {1,0x95,600,500}, // kin |
suupen | 0:f773f5034b8b | 30 | {1,0x00,600,500}, |
suupen | 0:f773f5034b8b | 31 | |
suupen | 0:f773f5034b8b | 32 | {1,0xC5,600,500}, // de |
suupen | 0:f773f5034b8b | 33 | {1,0xE5,600,500}, // me |
suupen | 0:f773f5034b8b | 34 | {1,0x95,600,500}, // kin |
suupen | 0:f773f5034b8b | 35 | {1,0x00,600,500}, |
suupen | 0:f773f5034b8b | 36 | |
suupen | 0:f773f5034b8b | 37 | {1,0xC5,600,500}, // de |
suupen | 0:f773f5034b8b | 38 | {1,0xE5,600,500}, // me |
suupen | 0:f773f5034b8b | 39 | {1,0x95,600,500}, // kin |
suupen | 0:f773f5034b8b | 40 | {1,0x95,600,500}, // no |
suupen | 0:f773f5034b8b | 41 | {1,0x95,150,500}, // shi |
suupen | 0:f773f5034b8b | 42 | {1,0x00,900,500}, |
suupen | 0:f773f5034b8b | 43 | {1,0xE5,750,500}, // po |
suupen | 0:f773f5034b8b | 44 | {1,0x00,450,500}, |
suupen | 0:f773f5034b8b | 45 | |
suupen | 0:f773f5034b8b | 46 | {1,0xC5,600,500}, // de |
suupen | 0:f773f5034b8b | 47 | {1,0xE5,600,500}, // me |
suupen | 0:f773f5034b8b | 48 | {1,0x95,600,500}, // kin |
suupen | 0:f773f5034b8b | 49 | {1,0x00,600,500}, |
suupen | 0:f773f5034b8b | 50 | |
suupen | 0:f773f5034b8b | 51 | {1,0xC5,600,500}, // de |
suupen | 0:f773f5034b8b | 52 | {1,0xE5,600,500}, // me |
suupen | 0:f773f5034b8b | 53 | {1,0x95,600,500}, // kin |
suupen | 0:f773f5034b8b | 54 | {1,0x00,600,500}, |
suupen | 0:f773f5034b8b | 55 | |
suupen | 0:f773f5034b8b | 56 | {1,0x95,600,500}, // ju |
suupen | 0:f773f5034b8b | 57 | {1,0xE5,600,500}, // go |
suupen | 0:f773f5034b8b | 58 | {1,0xD5,600,500}, // n |
suupen | 0:f773f5034b8b | 59 | {1,0xC5,600,500}, // no |
suupen | 0:f773f5034b8b | 60 | {1,0xE5,150,500}, // shi |
suupen | 0:f773f5034b8b | 61 | {1,0x00,900,500}, |
suupen | 0:f773f5034b8b | 62 | {1,0xC5,750,500}, // po |
suupen | 0:f773f5034b8b | 63 | {1,0x00,1350,500}, |
suupen | 0:f773f5034b8b | 64 | |
suupen | 0:f773f5034b8b | 65 | {1,0xFF,1000,0}, // end |
suupen | 0:f773f5034b8b | 66 | |
suupen | 0:f773f5034b8b | 67 | }; |
suupen | 0:f773f5034b8b | 68 | |
suupen | 0:f773f5034b8b | 69 | Sound sound(p21, p10); // p21(PwmOut), p10(DigitalOut) |
suupen | 0:f773f5034b8b | 70 | |
suupen | 0:f773f5034b8b | 71 | int main() { |
suupen | 0:f773f5034b8b | 72 | |
suupen | 0:f773f5034b8b | 73 | // Specifying the data to play melody |
suupen | 0:f773f5034b8b | 74 | sound.sound_enso((Sound::sound_t*)DEMEKIN); |
suupen | 0:f773f5034b8b | 75 | |
suupen | 0:f773f5034b8b | 76 | while(1) { |
suupen | 0:f773f5034b8b | 77 | if(sound.sound_enso() == false){ |
suupen | 0:f773f5034b8b | 78 | sound.sound_enso(true); |
suupen | 0:f773f5034b8b | 79 | } |
suupen | 0:f773f5034b8b | 80 | |
suupen | 0:f773f5034b8b | 81 | } |
suupen | 0:f773f5034b8b | 82 | } |