Lee Nam Cheol / Mbed OS lab03-pwm-music
Revision:
1:45d0e3e16b3a
Parent:
0:f31836d48420
--- a/main.cpp	Sun Mar 29 19:41:28 2020 +0000
+++ b/main.cpp	Tue Apr 21 12:19:09 2020 +0000
@@ -1,18 +1,43 @@
 #include "mbed.h"
+#include "pitches.h"
 
-// https://os.mbed.com/docs/mbed-os/v5.15/tools/creating-a-new-program.html
+PwmOut buzzer(PTA1);   //buzzer = PTA1
+int length = 56;
+float frequency[] = {NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_B5, NOTE_D6, NOTE_C6, NOTE_A5,
+                        NOTE_C5, NOTE_E5, NOTE_A5, NOTE_B5,
+                        NOTE_E5, NOTE_GS5, NOTE_B5, NOTE_C6,
+                        NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_DS6, NOTE_E6, NOTE_B5, NOTE_D6,NOTE_C6, NOTE_A5,
+                        NOTE_C5, NOTE_E5, NOTE_A5, NOTE_B5,
+                        NOTE_E5, NOTE_GS5, NOTE_B5, NOTE_C6,
+                        NOTE_B5, NOTE_C6, NOTE_D6, NOTE_E6,
+                        NOTE_G5, NOTE_F6, NOTE_E6, NOTE_D6,
+                        NOTE_F5, NOTE_E6, NOTE_D6, NOTE_C6,
+                        NOTE_E5, NOTE_D6, NOTE_C6, NOTE_B5,
+                        NOTE_E5, NOTE_E6};
+float beat[] = {12,12,12,12,12,12,12,12,9,
+                12,12,12,9,
+                12,12,12,9,
+                12,12,12,12,12,12,12,12,9,
+                12,12,12,9,
+                12,12,12,9,
+                12,12,12,9,
+                12,12,12,9,
+                12,12,12,9,
+                12,12,12,9,
+                12,9};
 
-Serial pc(USBTX, USBRX, 115200);    // baud rate 115200
-DigitalOut led(LED1);               // led = LED1
 
 int main()
 {
-    while (true) {
-        led = 0;
-        printf("LED1 is ON\r\n");
-        thread_sleep_for(500);
-        led = 1;
-        printf("LED1 is OFF\r\n");
-        thread_sleep_for(500);
+    while(true) {
+        for(int i = 0; i <= length; i++) {
+            if(frequency[i] == 0)
+                buzzer = 0.0;
+            else {
+                buzzer.period(1.0 / frequency[i]);  //period = (1.0 / frequency)
+                buzzer = 0.5;       //duty cycle = 50%
+            }
+            thread_sleep_for(3500.0 / beat[i]); //duration = (C / beat)ms
+        }
     }
 }
\ No newline at end of file