IOP / Mbed 2 deprecated Buzzer_HelloWorld_WIZwiki-W7500

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /**
00002  ******************************************************************************
00003  * @project  Web Piano 
00004  * @author  Justin Kim
00005  * @version V1.0.0
00006  * @date    03-JUL-2015
00007  * @brief   Main program body
00008 *******************************************************************************
00009 **/
00010 /* Includes ------------------------------------------------------------------*/
00011 #include "mbed.h"
00012 
00013 /* Private typedef -----------------------------------------------------------*/
00014 /* Private define ------------------------------------------------------------*/
00015 #define Do3  131 //C octave3
00016 #define Do3s 139 //C#
00017 #define Re3  147 //D
00018 #define Re3s 156//D#
00019 #define Mi3  165 //E
00020 #define Fa3  175 //F
00021 #define Fa3s 185 //F#
00022 #define So3  196 //G
00023 #define So3s 208 //G#
00024 #define La3  220 //A
00025 #define La3s 233 //A#
00026 #define Ti3  247 //B
00027 #define Do4  262 //C octave4
00028 #define Do4s 277 //C#
00029 #define Re4  294 //D
00030 #define Re4s 311//D#
00031 #define Mi4  330 //E
00032 #define Fa4  349 //F
00033 #define Fa4s 370 //F#
00034 #define So4  392 //G
00035 #define So4s 415 //G#
00036 #define La4  440 //A
00037 #define La4s 466 //A#
00038 #define Ti4  494 //B
00039 #define Do5  523 //C octave5
00040 #define Do5s 554 //C#
00041 #define Re5  587 //D
00042 #define Re5s 622//D#
00043 #define Mi5  659 //E
00044 #define Fa5  699 //F
00045 #define Fa5s 740 //F#
00046 #define So5  784 //G
00047 #define So5s 831 //G#
00048 #define La5  880 //A
00049 #define La5s 932 //A#
00050 #define Ti5  988 //B
00051 
00052 /* Private variables ---------------------------------------------------------*/
00053 PwmOut Buzzer(D3);
00054 
00055 
00056 float  C_3 = 1000000/Do3,
00057        Cs_3 = 1000000/Do3s,
00058        D_3 = 1000000/Re3,
00059        Ds_3 = 1000000/Re3s,
00060        E_3 = 1000000/Mi3,
00061        F_3 = 1000000/Fa3,
00062        Fs_3 = 1000000/Fa3s,
00063        G_3 = 1000000/So3,
00064        Gs_3 = 1000000/So3s,
00065        A_3 = 1000000/La3,
00066        As_3 = 1000000/La3s,
00067        B_3 = 1000000/Ti3,
00068        C_4 = 1000000/Do4,
00069        Cs_4 = 1000000/Do4s,
00070        D_4 = 1000000/Re4,
00071        Ds_4 = 1000000/Re4s,
00072        E_4 = 1000000/Mi4,
00073        F_4 = 1000000/Fa4,
00074        Fs_4 = 1000000/Fa4s,
00075        G_4 = 1000000/So4,
00076        Gs_4 = 1000000/So4s,
00077        A_4 = 1000000/La4,
00078        As_4 = 1000000/La4s,
00079        B_4 = 1000000/Ti4,
00080        C_5 = 1000000/Do5,
00081        Cs_5 = 1000000/Do5s,
00082        D_5 = 1000000/Re5,
00083        Ds_5 = 1000000/Re5s,
00084        E_5 = 1000000/Mi5,
00085        F_5 = 1000000/Fa5,
00086        Fs_5 = 1000000/Fa5s,
00087        G_5 = 1000000/So5,
00088        Gs_5 = 1000000/So5s,
00089        A_5 = 1000000/La5,
00090        As_5 = 1000000/La5s,
00091        B_5 = 1000000/Ti5;
00092        
00093        int tones_airplane[] = {E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, D_4, 0, E_4, G_4, G_4, 0, 
00094                              E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, E_4, D_4, C_4, 0, 0};
00095        
00096        int tones_school[] = {D_4, D_4, E_4, E_4, D_4, D_4, B_3, 0, D_4, D_4, B_3, B_3, A_3, 0,
00097                              D_4, D_4, E_4, E_4, D_4, D_4, B_3, 0, D_4, B_3, A_3, B_3, G_3, 0, 0, 0, 0};
00098                              
00099        int tones_num = 31;
00100 
00101 /* Private function prototypes -----------------------------------------------*/
00102 void Tune(PwmOut name, int period);
00103 void Auto_tunes(PwmOut name, int period);
00104 void Stop_tunes(PwmOut name);
00105  
00106         
00107 int main(void)
00108 {
00109     int i;
00110     
00111     for(i=0; i<tones_num; i++)
00112     {
00113         Auto_tunes(Buzzer, tones_airplane[i]);      // User can change tones_airplane[i] -> tones_achool[i]
00114         Stop_tunes(Buzzer);
00115     }
00116 }
00117 
00118 /**
00119    * @brief  Tune Function
00120    * @param  name : Choose the PwmOut
00121              period : this param is tune value. (C_3...B_5)
00122    */
00123 void Tune(PwmOut name, int period)
00124 {
00125     name.period_us(period);
00126     name.write(0.50f);              // 50% duty cycle
00127     wait(1);                        // 1 beat
00128     name.period_us(0);              // Sound off
00129 }
00130 
00131 /**
00132    * @brief  Auto tunes Function
00133    * @param  name : Choose the PwmOut
00134              period : this param is tune value. (C_3...B_5)
00135    */
00136 void Auto_tunes(PwmOut name, int period)
00137 {
00138     name.period_us(period);
00139     name.write(0.50f);              // 50% duty cycle
00140     wait_ms(250);                   // 1/4 beat
00141 }
00142 
00143 /**
00144    * @brief  Stop tunes Function
00145    * @param  name : Choose the PwmOut
00146    */
00147 void Stop_tunes(PwmOut name)
00148 {
00149     name.period_us(0);
00150 }
00151