awef

Dependents:   KeypadPiano

Fork of Speaker by ze chen

Committer:
UnitedHolmes
Date:
Tue Dec 08 00:43:32 2015 +0000
Revision:
1:bd28eb0ec6f8
Parent:
0:41292907c9cb
latest edit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zchen311 0:41292907c9cb 1 #include "mbed.h"
zchen311 0:41292907c9cb 2 // new class to play a note on Speaker based on PwmOut class
zchen311 0:41292907c9cb 3 class Speaker
zchen311 0:41292907c9cb 4 {
zchen311 0:41292907c9cb 5 public:
zchen311 0:41292907c9cb 6 Speaker(PinName pin) : _pin(pin) {
zchen311 0:41292907c9cb 7 // _pin(pin) means pass pin to the Speaker Constructor
zchen311 0:41292907c9cb 8 }
zchen311 0:41292907c9cb 9 // class method to play a note based on PwmOut class
UnitedHolmes 1:bd28eb0ec6f8 10 void PlayNote(float frequency, float frequency2, float duration, float volume) {
UnitedHolmes 1:bd28eb0ec6f8 11 if (frequency == 0) {
UnitedHolmes 1:bd28eb0ec6f8 12 _pin.period(1.0/frequency2);
UnitedHolmes 1:bd28eb0ec6f8 13 _pin = volume/2.0;
UnitedHolmes 1:bd28eb0ec6f8 14 wait(duration);
UnitedHolmes 1:bd28eb0ec6f8 15 }
UnitedHolmes 1:bd28eb0ec6f8 16 else if(frequency2 == 0) {
UnitedHolmes 1:bd28eb0ec6f8 17 _pin.period(1.0/frequency);
UnitedHolmes 1:bd28eb0ec6f8 18 _pin = volume/2.0;
UnitedHolmes 1:bd28eb0ec6f8 19 wait(duration);
UnitedHolmes 1:bd28eb0ec6f8 20 }
UnitedHolmes 1:bd28eb0ec6f8 21 else {
UnitedHolmes 1:bd28eb0ec6f8 22 _pin.period(1.0/frequency);
UnitedHolmes 1:bd28eb0ec6f8 23 _pin = volume/2.0;
UnitedHolmes 1:bd28eb0ec6f8 24 wait(.008);
UnitedHolmes 1:bd28eb0ec6f8 25 _pin = 0.0;
UnitedHolmes 1:bd28eb0ec6f8 26 _pin.period(1.0/frequency2);
zchen311 0:41292907c9cb 27 _pin = volume/2.0;
UnitedHolmes 1:bd28eb0ec6f8 28 wait(.008);
UnitedHolmes 1:bd28eb0ec6f8 29 }
UnitedHolmes 1:bd28eb0ec6f8 30 }
UnitedHolmes 1:bd28eb0ec6f8 31
UnitedHolmes 1:bd28eb0ec6f8 32 void StopPlaying() {
UnitedHolmes 1:bd28eb0ec6f8 33 _pin = 0;
UnitedHolmes 1:bd28eb0ec6f8 34 wait(0.001);
zchen311 0:41292907c9cb 35 }
zchen311 0:41292907c9cb 36
zchen311 0:41292907c9cb 37 private:
zchen311 0:41292907c9cb 38 PwmOut _pin;
zchen311 0:41292907c9cb 39 };