Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
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
Generated on Mon Jul 18 2022 02:28:38 by
1.7.2