Buzzer class with note definitions and custom song functionality

Committer:
Elefantul_umilit
Date:
Mon Feb 20 11:20:16 2017 +0000
Revision:
0:b530d1a3290f
Buzzer class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Elefantul_umilit 0:b530d1a3290f 1 #ifndef _BUZZER_H_
Elefantul_umilit 0:b530d1a3290f 2 #define _BUZZER_H_
Elefantul_umilit 0:b530d1a3290f 3
Elefantul_umilit 0:b530d1a3290f 4 #include "mbed.h"
Elefantul_umilit 0:b530d1a3290f 5
Elefantul_umilit 0:b530d1a3290f 6 class Buzzer {
Elefantul_umilit 0:b530d1a3290f 7 public:
Elefantul_umilit 0:b530d1a3290f 8 //all songs / sounds / routines names
Elefantul_umilit 0:b530d1a3290f 9 enum Song{
Elefantul_umilit 0:b530d1a3290f 10 POST_SOUND=0,
Elefantul_umilit 0:b530d1a3290f 11 IMPERIAL_MARCH,
Elefantul_umilit 0:b530d1a3290f 12 CUSTOM_SONG};
Elefantul_umilit 0:b530d1a3290f 13 //constructor
Elefantul_umilit 0:b530d1a3290f 14 Buzzer (PinName pin);
Elefantul_umilit 0:b530d1a3290f 15 //generates a sound of a desired frequency, for a fixed amount of time in s
Elefantul_umilit 0:b530d1a3290f 16 //no wait used (the main code execution is not delayed)
Elefantul_umilit 0:b530d1a3290f 17 void beep(float frequency, float time);
Elefantul_umilit 0:b530d1a3290f 18 //same functionality like beep, but it delays the execution
Elefantul_umilit 0:b530d1a3290f 19 void delayBeep(float frequency, float time);
Elefantul_umilit 0:b530d1a3290f 20 //given a Song defined in the enum above and a number of iterations
Elefantul_umilit 0:b530d1a3290f 21 //it sings the song for the specified amount of time
Elefantul_umilit 0:b530d1a3290f 22 void sing(Song, unsigned short);
Elefantul_umilit 0:b530d1a3290f 23 //it sings the song only once
Elefantul_umilit 0:b530d1a3290f 24 void sing(Song);
Elefantul_umilit 0:b530d1a3290f 25 //stops the buzzer
Elefantul_umilit 0:b530d1a3290f 26 void stop();
Elefantul_umilit 0:b530d1a3290f 27 private :
Elefantul_umilit 0:b530d1a3290f 28 PwmOut pwm;
Elefantul_umilit 0:b530d1a3290f 29 Timeout timeOff;
Elefantul_umilit 0:b530d1a3290f 30 };
Elefantul_umilit 0:b530d1a3290f 31
Elefantul_umilit 0:b530d1a3290f 32
Elefantul_umilit 0:b530d1a3290f 33 #endif
Elefantul_umilit 0:b530d1a3290f 34