bluetooth
Dependencies: 4DGL-uLCD-SE SDFileSystem_3 mbed-rtos mbed wave_player
SongPlayer.h
- Committer:
- mus3
- Date:
- 21 months ago
- Revision:
- 3:0bc0b28da20d
- Parent:
- 0:f531454e4dce
File content as of revision 3:0bc0b28da20d:
#include "mbed.h"
// new class to play a note on Speaker based on PwmOut class
class SongPlayer
{
public:
SongPlayer(PinName pin) : _pin(pin) {
// _pin(pin) means pass pin to the constructor
}
// class method to play a note based on PwmOut class
void PlaySong(float frequency[], float duration[], float volume=1.0) {
vol = volume;
notecount = 0;
_pin.period(1.0/frequency[notecount]);
_pin = volume/2.0;
noteduration.attach(this,&SongPlayer::nextnote, duration[notecount]);
// setup timer to interrupt for next note to play
frequencyptr = frequency;
durationptr = duration;
//returns after first note starts to play
}
void nextnote();
private:
Timeout noteduration;
PwmOut _pin;
int notecount;
float vol;
float * frequencyptr;
float * durationptr;
};
//Interrupt Routine to play next note
void SongPlayer::nextnote()
{
_pin = 0.0;
notecount++; //setup next note in song
if (durationptr[notecount]!=0.0) {
_pin.period(1.0/frequencyptr[notecount]);
noteduration.attach(this,&SongPlayer::nextnote, durationptr[notecount]);
_pin = vol/2.0;
} else
_pin = 0.0; //turn off on last note
}