Bzzer_HelloWorld Example for WIZwiki-W7500
Dependencies: mbed
main.cpp@9:bb3df348b730, 2017-04-20 (annotated)
- Committer:
- jcm931213
- Date:
- Thu Apr 20 02:28:45 2017 +0000
- Revision:
- 9:bb3df348b730
- Parent:
- 8:ebfa804378a5
revert revision5
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| justinkim | 0:c4205a3ad6fe | 1 | /** |
| justinkim | 0:c4205a3ad6fe | 2 | ****************************************************************************** |
| justinkim | 0:c4205a3ad6fe | 3 | * @project Web Piano |
| justinkim | 0:c4205a3ad6fe | 4 | * @author Justin Kim |
| justinkim | 0:c4205a3ad6fe | 5 | * @version V1.0.0 |
| justinkim | 0:c4205a3ad6fe | 6 | * @date 03-JUL-2015 |
| justinkim | 0:c4205a3ad6fe | 7 | * @brief Main program body |
| justinkim | 0:c4205a3ad6fe | 8 | ******************************************************************************* |
| justinkim | 0:c4205a3ad6fe | 9 | **/ |
| justinkim | 0:c4205a3ad6fe | 10 | /* Includes ------------------------------------------------------------------*/ |
| justinkim | 0:c4205a3ad6fe | 11 | #include "mbed.h" |
| justinkim | 0:c4205a3ad6fe | 12 | |
| justinkim | 0:c4205a3ad6fe | 13 | /* Private typedef -----------------------------------------------------------*/ |
| justinkim | 0:c4205a3ad6fe | 14 | /* Private define ------------------------------------------------------------*/ |
| justinkim | 0:c4205a3ad6fe | 15 | #define Do3 131 //C octave3 |
| justinkim | 0:c4205a3ad6fe | 16 | #define Do3s 139 //C# |
| justinkim | 0:c4205a3ad6fe | 17 | #define Re3 147 //D |
| justinkim | 0:c4205a3ad6fe | 18 | #define Re3s 156//D# |
| justinkim | 0:c4205a3ad6fe | 19 | #define Mi3 165 //E |
| justinkim | 0:c4205a3ad6fe | 20 | #define Fa3 175 //F |
| justinkim | 0:c4205a3ad6fe | 21 | #define Fa3s 185 //F# |
| justinkim | 0:c4205a3ad6fe | 22 | #define So3 196 //G |
| justinkim | 0:c4205a3ad6fe | 23 | #define So3s 208 //G# |
| justinkim | 0:c4205a3ad6fe | 24 | #define La3 220 //A |
| justinkim | 0:c4205a3ad6fe | 25 | #define La3s 233 //A# |
| justinkim | 0:c4205a3ad6fe | 26 | #define Ti3 247 //B |
| justinkim | 0:c4205a3ad6fe | 27 | #define Do4 262 //C octave4 |
| justinkim | 0:c4205a3ad6fe | 28 | #define Do4s 277 //C# |
| justinkim | 0:c4205a3ad6fe | 29 | #define Re4 294 //D |
| justinkim | 0:c4205a3ad6fe | 30 | #define Re4s 311//D# |
| justinkim | 0:c4205a3ad6fe | 31 | #define Mi4 330 //E |
| justinkim | 0:c4205a3ad6fe | 32 | #define Fa4 349 //F |
| justinkim | 0:c4205a3ad6fe | 33 | #define Fa4s 370 //F# |
| justinkim | 0:c4205a3ad6fe | 34 | #define So4 392 //G |
| justinkim | 0:c4205a3ad6fe | 35 | #define So4s 415 //G# |
| justinkim | 0:c4205a3ad6fe | 36 | #define La4 440 //A |
| justinkim | 0:c4205a3ad6fe | 37 | #define La4s 466 //A# |
| justinkim | 0:c4205a3ad6fe | 38 | #define Ti4 494 //B |
| justinkim | 0:c4205a3ad6fe | 39 | #define Do5 523 //C octave5 |
| justinkim | 0:c4205a3ad6fe | 40 | #define Do5s 554 //C# |
| justinkim | 0:c4205a3ad6fe | 41 | #define Re5 587 //D |
| justinkim | 0:c4205a3ad6fe | 42 | #define Re5s 622//D# |
| justinkim | 0:c4205a3ad6fe | 43 | #define Mi5 659 //E |
| justinkim | 0:c4205a3ad6fe | 44 | #define Fa5 699 //F |
| justinkim | 0:c4205a3ad6fe | 45 | #define Fa5s 740 //F# |
| justinkim | 0:c4205a3ad6fe | 46 | #define So5 784 //G |
| justinkim | 0:c4205a3ad6fe | 47 | #define So5s 831 //G# |
| justinkim | 0:c4205a3ad6fe | 48 | #define La5 880 //A |
| justinkim | 0:c4205a3ad6fe | 49 | #define La5s 932 //A# |
| justinkim | 0:c4205a3ad6fe | 50 | #define Ti5 988 //B |
| justinkim | 0:c4205a3ad6fe | 51 | |
| justinkim | 0:c4205a3ad6fe | 52 | /* Private variables ---------------------------------------------------------*/ |
| IOP | 4:2821beb9bfc8 | 53 | PwmOut Buzzer(D3); |
| justinkim | 0:c4205a3ad6fe | 54 | |
| jcm931213 | 9:bb3df348b730 | 55 | |
| IOP | 2:bdbe512fe5b2 | 56 | float C_3 = 1000000/Do3, |
| justinkim | 0:c4205a3ad6fe | 57 | Cs_3 = 1000000/Do3s, |
| justinkim | 0:c4205a3ad6fe | 58 | D_3 = 1000000/Re3, |
| justinkim | 0:c4205a3ad6fe | 59 | Ds_3 = 1000000/Re3s, |
| justinkim | 0:c4205a3ad6fe | 60 | E_3 = 1000000/Mi3, |
| justinkim | 0:c4205a3ad6fe | 61 | F_3 = 1000000/Fa3, |
| justinkim | 0:c4205a3ad6fe | 62 | Fs_3 = 1000000/Fa3s, |
| justinkim | 0:c4205a3ad6fe | 63 | G_3 = 1000000/So3, |
| justinkim | 0:c4205a3ad6fe | 64 | Gs_3 = 1000000/So3s, |
| justinkim | 0:c4205a3ad6fe | 65 | A_3 = 1000000/La3, |
| justinkim | 0:c4205a3ad6fe | 66 | As_3 = 1000000/La3s, |
| justinkim | 0:c4205a3ad6fe | 67 | B_3 = 1000000/Ti3, |
| justinkim | 0:c4205a3ad6fe | 68 | C_4 = 1000000/Do4, |
| justinkim | 0:c4205a3ad6fe | 69 | Cs_4 = 1000000/Do4s, |
| justinkim | 0:c4205a3ad6fe | 70 | D_4 = 1000000/Re4, |
| justinkim | 0:c4205a3ad6fe | 71 | Ds_4 = 1000000/Re4s, |
| justinkim | 0:c4205a3ad6fe | 72 | E_4 = 1000000/Mi4, |
| justinkim | 0:c4205a3ad6fe | 73 | F_4 = 1000000/Fa4, |
| justinkim | 0:c4205a3ad6fe | 74 | Fs_4 = 1000000/Fa4s, |
| justinkim | 0:c4205a3ad6fe | 75 | G_4 = 1000000/So4, |
| justinkim | 0:c4205a3ad6fe | 76 | Gs_4 = 1000000/So4s, |
| justinkim | 0:c4205a3ad6fe | 77 | A_4 = 1000000/La4, |
| justinkim | 0:c4205a3ad6fe | 78 | As_4 = 1000000/La4s, |
| justinkim | 0:c4205a3ad6fe | 79 | B_4 = 1000000/Ti4, |
| justinkim | 0:c4205a3ad6fe | 80 | C_5 = 1000000/Do5, |
| justinkim | 0:c4205a3ad6fe | 81 | Cs_5 = 1000000/Do5s, |
| justinkim | 0:c4205a3ad6fe | 82 | D_5 = 1000000/Re5, |
| justinkim | 0:c4205a3ad6fe | 83 | Ds_5 = 1000000/Re5s, |
| justinkim | 0:c4205a3ad6fe | 84 | E_5 = 1000000/Mi5, |
| justinkim | 0:c4205a3ad6fe | 85 | F_5 = 1000000/Fa5, |
| justinkim | 0:c4205a3ad6fe | 86 | Fs_5 = 1000000/Fa5s, |
| justinkim | 0:c4205a3ad6fe | 87 | G_5 = 1000000/So5, |
| justinkim | 0:c4205a3ad6fe | 88 | Gs_5 = 1000000/So5s, |
| justinkim | 0:c4205a3ad6fe | 89 | A_5 = 1000000/La5, |
| justinkim | 0:c4205a3ad6fe | 90 | As_5 = 1000000/La5s, |
| justinkim | 0:c4205a3ad6fe | 91 | B_5 = 1000000/Ti5; |
| justinkim | 0:c4205a3ad6fe | 92 | |
| IOP | 2:bdbe512fe5b2 | 93 | 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, |
| IOP | 2:bdbe512fe5b2 | 94 | 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}; |
| IOP | 2:bdbe512fe5b2 | 95 | |
| IOP | 2:bdbe512fe5b2 | 96 | 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, |
| IOP | 2:bdbe512fe5b2 | 97 | 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}; |
| IOP | 2:bdbe512fe5b2 | 98 | |
| IOP | 2:bdbe512fe5b2 | 99 | int tones_num = 31; |
| justinkim | 0:c4205a3ad6fe | 100 | |
| justinkim | 0:c4205a3ad6fe | 101 | /* Private function prototypes -----------------------------------------------*/ |
| justinkim | 0:c4205a3ad6fe | 102 | void Tune(PwmOut name, int period); |
| justinkim | 0:c4205a3ad6fe | 103 | void Auto_tunes(PwmOut name, int period); |
| justinkim | 0:c4205a3ad6fe | 104 | void Stop_tunes(PwmOut name); |
| IOP | 2:bdbe512fe5b2 | 105 | |
| justinkim | 0:c4205a3ad6fe | 106 | |
| justinkim | 0:c4205a3ad6fe | 107 | int main(void) |
| justinkim | 0:c4205a3ad6fe | 108 | { |
| justinkim | 0:c4205a3ad6fe | 109 | int i; |
| justinkim | 0:c4205a3ad6fe | 110 | |
| justinkim | 0:c4205a3ad6fe | 111 | for(i=0; i<tones_num; i++) |
| justinkim | 0:c4205a3ad6fe | 112 | { |
| IOP | 5:de0ba139a472 | 113 | Auto_tunes(Buzzer, tones_airplane[i]); // User can change tones_airplane[i] -> tones_achool[i] |
| justinkim | 0:c4205a3ad6fe | 114 | Stop_tunes(Buzzer); |
| justinkim | 0:c4205a3ad6fe | 115 | } |
| justinkim | 0:c4205a3ad6fe | 116 | } |
| justinkim | 0:c4205a3ad6fe | 117 | |
| justinkim | 0:c4205a3ad6fe | 118 | /** |
| IOP | 2:bdbe512fe5b2 | 119 | * @brief Tune Function |
| justinkim | 0:c4205a3ad6fe | 120 | * @param name : Choose the PwmOut |
| IOP | 2:bdbe512fe5b2 | 121 | period : this param is tune value. (C_3...B_5) |
| justinkim | 0:c4205a3ad6fe | 122 | */ |
| justinkim | 0:c4205a3ad6fe | 123 | void Tune(PwmOut name, int period) |
| justinkim | 0:c4205a3ad6fe | 124 | { |
| justinkim | 0:c4205a3ad6fe | 125 | name.period_us(period); |
| IOP | 5:de0ba139a472 | 126 | name.write(0.50f); // 50% duty cycle |
| IOP | 5:de0ba139a472 | 127 | wait(1); // 1 beat |
| IOP | 5:de0ba139a472 | 128 | name.period_us(0); // Sound off |
| justinkim | 0:c4205a3ad6fe | 129 | } |
| justinkim | 0:c4205a3ad6fe | 130 | |
| justinkim | 0:c4205a3ad6fe | 131 | /** |
| IOP | 2:bdbe512fe5b2 | 132 | * @brief Auto tunes Function |
| justinkim | 0:c4205a3ad6fe | 133 | * @param name : Choose the PwmOut |
| IOP | 2:bdbe512fe5b2 | 134 | period : this param is tune value. (C_3...B_5) |
| justinkim | 0:c4205a3ad6fe | 135 | */ |
| justinkim | 0:c4205a3ad6fe | 136 | void Auto_tunes(PwmOut name, int period) |
| justinkim | 0:c4205a3ad6fe | 137 | { |
| justinkim | 0:c4205a3ad6fe | 138 | name.period_us(period); |
| IOP | 5:de0ba139a472 | 139 | name.write(0.50f); // 50% duty cycle |
| IOP | 5:de0ba139a472 | 140 | wait_ms(250); // 1/4 beat |
| justinkim | 0:c4205a3ad6fe | 141 | } |
| justinkim | 0:c4205a3ad6fe | 142 | |
| IOP | 2:bdbe512fe5b2 | 143 | /** |
| IOP | 2:bdbe512fe5b2 | 144 | * @brief Stop tunes Function |
| IOP | 2:bdbe512fe5b2 | 145 | * @param name : Choose the PwmOut |
| IOP | 2:bdbe512fe5b2 | 146 | */ |
| justinkim | 0:c4205a3ad6fe | 147 | void Stop_tunes(PwmOut name) |
| justinkim | 0:c4205a3ad6fe | 148 | { |
| justinkim | 0:c4205a3ad6fe | 149 | name.period_us(0); |
| justinkim | 0:c4205a3ad6fe | 150 | } |
| jcm931213 | 8:ebfa804378a5 | 151 |
IOP