![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
4 songs: rain, william, sun, and circus
Diff: Buzzer.cpp
- Revision:
- 0:c02f01feda7b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Buzzer.cpp Sat May 09 21:29:00 2015 +0000 @@ -0,0 +1,103 @@ +#include "Buzzer.h" + + +/* + Buzzer + The example use a buzzer to play melodies. It sends a square wave of the + appropriate frequency to the buzzer, generating the corresponding tone. + + The circuit: + * Buzzer attached to pin39 (J14 plug on Grove Base BoosterPack) + * one side pin (either one) to ground + * the other side pin to VCC + * LED anode (long leg) attached to RED_LED + * LED cathode (short leg) attached to ground + + * Note: + + + This example code is in the public domain. + + http://www.seeedstudio.com/wiki/index.php?title=GROVE_-_Starter_Kit_v1.1b#Grove_-_Buzzer + +*/ +static DigitalOut Buzzer(BUZZER_PIN); + +/* play tone */ +void playTone(int tone, int duration) { + for (long i = 0; i < duration * 1000L; i += tone * 2) { + Buzzer = 1; + wait_us(tone); + Buzzer = 0; + wait_us(tone); + } +} + +void playNote(char note, int range, int duration) { + int cTones[] = { 3822, 1911, 956, 478}; + int CTones[] = { 3608, 1803, 902 }; + int dTones[] = { 3405, 1702, 851 }; + int DTones[] = { 3214, 1607, 803 }; + int eTones[] = { 3034, 1517, 758 }; + int fTones[] = { 2863, 1432, 716 }; + int FTones[] = { 2702, 1351, 675 }; + int gTones[] = { 2551, 1275, 638 }; + int GTones[] = { 2408, 1204, 602 }; + int aTones[] = { 2273, 1136, 568 }; + int ATones[] = { 2145, 1072, 536 }; + int bTones[] = { 2025, 1013, 506 }; + + // play the tone corresponding to the note name + switch (note) { + case 'a': + playTone(aTones[range - RANGE_OFFSET], duration); + break; + + case 'A': + playTone(ATones[range - RANGE_OFFSET], duration); + break; + + case 'b': + playTone(bTones[range - RANGE_OFFSET], duration); + break; + + case 'c': + playTone(cTones[range - RANGE_OFFSET], duration); + break; + + case 'C': + playTone(CTones[range - RANGE_OFFSET], duration); + break; + + case 'd': + playTone(dTones[range - RANGE_OFFSET], duration); + break; + + case 'D': + playTone(DTones[range - RANGE_OFFSET], duration); + break; + + case 'e': + playTone(eTones[range - RANGE_OFFSET], duration); + break; + + case 'f': + playTone(fTones[range - RANGE_OFFSET], duration); + break; + + case 'F': + playTone(FTones[range - RANGE_OFFSET], duration); + break; + + case 'g': + playTone(gTones[range - RANGE_OFFSET], duration); + break; + + case 'G': + playTone(GTones[range - RANGE_OFFSET], duration); + break; + + default: + playTone(cTones[0], duration); + } +} \ No newline at end of file