Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed wave_player
Fork of USBKeyboard_HelloWorld by
SongPlayer.h
00001 #include "mbed.h" 00002 // new class to play a note on Speaker based on PwmOut class 00003 class SongPlayer 00004 { 00005 public: 00006 SongPlayer(PinName pin) : _pin(pin) { 00007 // _pin(pin) means pass pin to the constructor 00008 } 00009 // class method to play a note based on PwmOut class 00010 void PlaySong(float frequency[], float duration[], float volume=1.0) { 00011 vol = volume; 00012 notecount = 0; 00013 _pin.period(1.0/frequency[notecount]); 00014 _pin = volume/2.0; 00015 noteduration.attach(this,&SongPlayer::nextnote, duration[notecount]); 00016 // setup timer to interrupt for next note to play 00017 frequencyptr = frequency; 00018 durationptr = duration; 00019 //returns after first note starts to play 00020 } 00021 void nextnote(); 00022 private: 00023 Timeout noteduration; 00024 PwmOut _pin; 00025 int notecount; 00026 float vol; 00027 float * frequencyptr; 00028 float * durationptr; 00029 }; 00030 //Interrupt Routine to play next note 00031 void SongPlayer::nextnote() 00032 { 00033 _pin = 0.0; 00034 notecount++; //setup next note in song 00035 if (durationptr[notecount]!=0.0) { 00036 _pin.period(1.0/frequencyptr[notecount]); 00037 noteduration.attach(this,&SongPlayer::nextnote, durationptr[notecount]); 00038 _pin = vol/2.0; 00039 } else 00040 _pin = 0.0; //turn off on last note 00041 }
Generated on Fri Jul 15 2022 02:06:11 by
1.7.2
