Bzzer_HelloWorld Example for WIZwiki-W7500

Dependencies:   mbed

Committer:
justinkim
Date:
Fri Jul 03 07:45:48 2015 +0000
Revision:
0:c4205a3ad6fe
Child:
1:067ddbdbac9c
first release

Who changed what in which revision?

UserRevisionLine numberNew 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 ---------------------------------------------------------*/
justinkim 0:c4205a3ad6fe 53 PwmOut Buzzer(D3);
justinkim 0:c4205a3ad6fe 54
justinkim 0:c4205a3ad6fe 55 float C_3 = 1000000/Do3,
justinkim 0:c4205a3ad6fe 56 Cs_3 = 1000000/Do3s,
justinkim 0:c4205a3ad6fe 57 D_3 = 1000000/Re3,
justinkim 0:c4205a3ad6fe 58 Ds_3 = 1000000/Re3s,
justinkim 0:c4205a3ad6fe 59 E_3 = 1000000/Mi3,
justinkim 0:c4205a3ad6fe 60 F_3 = 1000000/Fa3,
justinkim 0:c4205a3ad6fe 61 Fs_3 = 1000000/Fa3s,
justinkim 0:c4205a3ad6fe 62 G_3 = 1000000/So3,
justinkim 0:c4205a3ad6fe 63 Gs_3 = 1000000/So3s,
justinkim 0:c4205a3ad6fe 64 A_3 = 1000000/La3,
justinkim 0:c4205a3ad6fe 65 As_3 = 1000000/La3s,
justinkim 0:c4205a3ad6fe 66 B_3 = 1000000/Ti3,
justinkim 0:c4205a3ad6fe 67 C_4 = 1000000/Do4,
justinkim 0:c4205a3ad6fe 68 Cs_4 = 1000000/Do4s,
justinkim 0:c4205a3ad6fe 69 D_4 = 1000000/Re4,
justinkim 0:c4205a3ad6fe 70 Ds_4 = 1000000/Re4s,
justinkim 0:c4205a3ad6fe 71 E_4 = 1000000/Mi4,
justinkim 0:c4205a3ad6fe 72 F_4 = 1000000/Fa4,
justinkim 0:c4205a3ad6fe 73 Fs_4 = 1000000/Fa4s,
justinkim 0:c4205a3ad6fe 74 G_4 = 1000000/So4,
justinkim 0:c4205a3ad6fe 75 Gs_4 = 1000000/So4s,
justinkim 0:c4205a3ad6fe 76 A_4 = 1000000/La4,
justinkim 0:c4205a3ad6fe 77 As_4 = 1000000/La4s,
justinkim 0:c4205a3ad6fe 78 B_4 = 1000000/Ti4,
justinkim 0:c4205a3ad6fe 79 C_5 = 1000000/Do5,
justinkim 0:c4205a3ad6fe 80 Cs_5 = 1000000/Do5s,
justinkim 0:c4205a3ad6fe 81 D_5 = 1000000/Re5,
justinkim 0:c4205a3ad6fe 82 Ds_5 = 1000000/Re5s,
justinkim 0:c4205a3ad6fe 83 E_5 = 1000000/Mi5,
justinkim 0:c4205a3ad6fe 84 F_5 = 1000000/Fa5,
justinkim 0:c4205a3ad6fe 85 Fs_5 = 1000000/Fa5s,
justinkim 0:c4205a3ad6fe 86 G_5 = 1000000/So5,
justinkim 0:c4205a3ad6fe 87 Gs_5 = 1000000/So5s,
justinkim 0:c4205a3ad6fe 88 A_5 = 1000000/La5,
justinkim 0:c4205a3ad6fe 89 As_5 = 1000000/La5s,
justinkim 0:c4205a3ad6fe 90 B_5 = 1000000/Ti5;
justinkim 0:c4205a3ad6fe 91
justinkim 0:c4205a3ad6fe 92 int tones[] = {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,
justinkim 0:c4205a3ad6fe 93 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, 0};
justinkim 0:c4205a3ad6fe 94 int tones_num = 32;
justinkim 0:c4205a3ad6fe 95
justinkim 0:c4205a3ad6fe 96 /* Private function prototypes -----------------------------------------------*/
justinkim 0:c4205a3ad6fe 97 void Tune(PwmOut name, int period);
justinkim 0:c4205a3ad6fe 98 void Auto_tunes(PwmOut name, int period);
justinkim 0:c4205a3ad6fe 99 void Stop_tunes(PwmOut name);
justinkim 0:c4205a3ad6fe 100
justinkim 0:c4205a3ad6fe 101 /* Private functions ---------------------------------------------------------*/
justinkim 0:c4205a3ad6fe 102 /**
justinkim 0:c4205a3ad6fe 103 * @brief Main Function
justinkim 0:c4205a3ad6fe 104 * @param None
justinkim 0:c4205a3ad6fe 105 * @retval None
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 {
justinkim 0:c4205a3ad6fe 113 Auto_tunes(Buzzer, tones[i]); // Auto performance
justinkim 0:c4205a3ad6fe 114 Stop_tunes(Buzzer);
justinkim 0:c4205a3ad6fe 115 }
justinkim 0:c4205a3ad6fe 116 }
justinkim 0:c4205a3ad6fe 117
justinkim 0:c4205a3ad6fe 118 /**
justinkim 0:c4205a3ad6fe 119 * @brief Tune Function
justinkim 0:c4205a3ad6fe 120 * @param name : Choose the PwmOut
justinkim 0:c4205a3ad6fe 121 period : this param is tune value. (C_3...B_5)
justinkim 0:c4205a3ad6fe 122 * @retval None
justinkim 0:c4205a3ad6fe 123 */
justinkim 0:c4205a3ad6fe 124 void Tune(PwmOut name, int period)
justinkim 0:c4205a3ad6fe 125 {
justinkim 0:c4205a3ad6fe 126 name.period_us(period);
justinkim 0:c4205a3ad6fe 127 name.write(0.50f); // 50% duty cycle
justinkim 0:c4205a3ad6fe 128 wait(1); // 1 beat
justinkim 0:c4205a3ad6fe 129 name.period_us(0); // Sound off
justinkim 0:c4205a3ad6fe 130 }
justinkim 0:c4205a3ad6fe 131
justinkim 0:c4205a3ad6fe 132 /**
justinkim 0:c4205a3ad6fe 133 * @brief Auto tunes Function
justinkim 0:c4205a3ad6fe 134 * @param name : Choose the PwmOut
justinkim 0:c4205a3ad6fe 135 period : this param is tune value. (C_3...B_5)
justinkim 0:c4205a3ad6fe 136 * @retval None
justinkim 0:c4205a3ad6fe 137 */
justinkim 0:c4205a3ad6fe 138 void Auto_tunes(PwmOut name, int period)
justinkim 0:c4205a3ad6fe 139 {
justinkim 0:c4205a3ad6fe 140 name.period_us(period);
justinkim 0:c4205a3ad6fe 141 name.write(0.50f); // 50% duty cycle
justinkim 0:c4205a3ad6fe 142 wait_ms(250); // 1/4 beat
justinkim 0:c4205a3ad6fe 143 }
justinkim 0:c4205a3ad6fe 144
justinkim 0:c4205a3ad6fe 145 void Stop_tunes(PwmOut name)
justinkim 0:c4205a3ad6fe 146 {
justinkim 0:c4205a3ad6fe 147 name.period_us(0);
justinkim 0:c4205a3ad6fe 148 }