Dependencies:   mbed

Committer:
kanpapa
Date:
Sat Jun 19 07:36:36 2010 +0000
Revision:
0:6d7da16d0d1a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kanpapa 0:6d7da16d0d1a 1 //
kanpapa 0:6d7da16d0d1a 2 // mbed POV melody sound by Kanpapa
kanpapa 0:6d7da16d0d1a 3 // Jun.19, 2010
kanpapa 0:6d7da16d0d1a 4 //
kanpapa 0:6d7da16d0d1a 5
kanpapa 0:6d7da16d0d1a 6 // mbed
kanpapa 0:6d7da16d0d1a 7 // p21 speaker
kanpapa 0:6d7da16d0d1a 8
kanpapa 0:6d7da16d0d1a 9 // Original Version
kanpapa 0:6d7da16d0d1a 10 // 2010/1/21 by Tom Igoe
kanpapa 0:6d7da16d0d1a 11 // http://arduino.cc/en/Tutorial/Tone
kanpapa 0:6d7da16d0d1a 12 // 2010/4/23 by otonano kagaku
kanpapa 0:6d7da16d0d1a 13 // http://otonanokagaku.net/japanino/sketch/sketch_02.html
kanpapa 0:6d7da16d0d1a 14
kanpapa 0:6d7da16d0d1a 15 #include "mbed.h"
kanpapa 0:6d7da16d0d1a 16 #include "Beeper.h"
kanpapa 0:6d7da16d0d1a 17
kanpapa 0:6d7da16d0d1a 18 DigitalOut myled(LED1);
kanpapa 0:6d7da16d0d1a 19 Beeper myBeeper(p21);
kanpapa 0:6d7da16d0d1a 20
kanpapa 0:6d7da16d0d1a 21 // MIDI NOTE data
kanpapa 0:6d7da16d0d1a 22 #define NOTE_C4 60
kanpapa 0:6d7da16d0d1a 23 #define NOTE_D4 62
kanpapa 0:6d7da16d0d1a 24 #define NOTE_E4 64
kanpapa 0:6d7da16d0d1a 25 #define NOTE_F4 65
kanpapa 0:6d7da16d0d1a 26 #define NOTE_G4 67
kanpapa 0:6d7da16d0d1a 27 #define NOTE_A4 69
kanpapa 0:6d7da16d0d1a 28 #define NOTE_B4 71
kanpapa 0:6d7da16d0d1a 29
kanpapa 0:6d7da16d0d1a 30 // melody data
kanpapa 0:6d7da16d0d1a 31 int melody[] = {
kanpapa 0:6d7da16d0d1a 32 NOTE_C4, NOTE_F4, NOTE_F4, NOTE_A4, NOTE_G4, NOTE_F4, NOTE_A4, 0, NOTE_G4, NOTE_F4, NOTE_D4, NOTE_C4 ,0 };
kanpapa 0:6d7da16d0d1a 33
kanpapa 0:6d7da16d0d1a 34 int noteDurations[] = {
kanpapa 0:6d7da16d0d1a 35 8,8,2,16,16,8,4,4,4,2,4,2,4
kanpapa 0:6d7da16d0d1a 36 };
kanpapa 0:6d7da16d0d1a 37
kanpapa 0:6d7da16d0d1a 38 int main() {
kanpapa 0:6d7da16d0d1a 39 while(1) {
kanpapa 0:6d7da16d0d1a 40 for (int thisNote = 0; thisNote < 13; thisNote++) {
kanpapa 0:6d7da16d0d1a 41 myled = 1;
kanpapa 0:6d7da16d0d1a 42 int noteDuration = 2000/noteDurations[thisNote];
kanpapa 0:6d7da16d0d1a 43
kanpapa 0:6d7da16d0d1a 44 if (melody[thisNote] == 0) {
kanpapa 0:6d7da16d0d1a 45 wait_ms(noteDuration);
kanpapa 0:6d7da16d0d1a 46 } else {
kanpapa 0:6d7da16d0d1a 47 myBeeper.note(melody[thisNote],(float)noteDuration/1000);
kanpapa 0:6d7da16d0d1a 48 }
kanpapa 0:6d7da16d0d1a 49
kanpapa 0:6d7da16d0d1a 50 myled = 0;
kanpapa 0:6d7da16d0d1a 51
kanpapa 0:6d7da16d0d1a 52 int pauseBetweenNotes = noteDuration * 0.30;
kanpapa 0:6d7da16d0d1a 53
kanpapa 0:6d7da16d0d1a 54 wait_ms(pauseBetweenNotes);
kanpapa 0:6d7da16d0d1a 55 }
kanpapa 0:6d7da16d0d1a 56 wait_ms(1000);
kanpapa 0:6d7da16d0d1a 57 }
kanpapa 0:6d7da16d0d1a 58 }