Make noise with a piezo buzzer. Use a pwm pin.

Dependents:   Cave_Runner popcorn default USBMIDI_Buzzer ... more

Committer:
dreschpe
Date:
Tue Sep 11 08:21:45 2012 +0000
Revision:
4:d8e14429a95f
Parent:
beep.c@3:5a8242af60ba
change beep.c to beep.cpp to avoid compiler problems

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dreschpe 0:18e4a9c978ec 1 #include "beep.h"
dreschpe 0:18e4a9c978ec 2 #include "mbed.h"
dreschpe 0:18e4a9c978ec 3
dreschpe 2:a34405c20cf5 4 /** class to make sound with a buzzer, based on a PwmOut
dreschpe 3:5a8242af60ba 5 * The class use a timeout to switch off the sound - it is not blocking while making noise
dreschpe 3:5a8242af60ba 6 *
dreschpe 3:5a8242af60ba 7 * Example:
dreschpe 3:5a8242af60ba 8 * @code
dreschpe 3:5a8242af60ba 9 * // Beep with 1Khz for 0.5 seconds
dreschpe 3:5a8242af60ba 10 * #include "mbed.h"
dreschpe 3:5a8242af60ba 11 * #include "beep.h"
dreschpe 3:5a8242af60ba 12 *
dreschpe 3:5a8242af60ba 13 * Beep buzzer(p21);
dreschpe 3:5a8242af60ba 14 *
dreschpe 3:5a8242af60ba 15 * int main() {
dreschpe 3:5a8242af60ba 16 * ...
dreschpe 3:5a8242af60ba 17 * buzzer.beep(1000,0.5);
dreschpe 3:5a8242af60ba 18 * ...
dreschpe 3:5a8242af60ba 19 * }
dreschpe 3:5a8242af60ba 20 * @endcode
dreschpe 3:5a8242af60ba 21 */
dreschpe 2:a34405c20cf5 22
dreschpe 0:18e4a9c978ec 23 using namespace mbed;
dreschpe 3:5a8242af60ba 24 // constructor
dreschpe 2:a34405c20cf5 25 /** Create a Beep object connected to the specified PwmOut pin
dreschpe 3:5a8242af60ba 26 *
dreschpe 3:5a8242af60ba 27 * @param pin PwmOut pin to connect to
dreschpe 3:5a8242af60ba 28 */
dreschpe 2:a34405c20cf5 29
dreschpe 0:18e4a9c978ec 30 Beep::Beep(PinName pin) : _pwm(pin) {
dreschpe 0:18e4a9c978ec 31 _pwm.write(0.0); // after creating it have to be off
dreschpe 0:18e4a9c978ec 32 }
dreschpe 0:18e4a9c978ec 33
dreschpe 2:a34405c20cf5 34 /** stop the beep instantaneous
dreschpe 3:5a8242af60ba 35 * usually not used
dreschpe 3:5a8242af60ba 36 */
dreschpe 0:18e4a9c978ec 37 void Beep::nobeep() {
dreschpe 0:18e4a9c978ec 38 _pwm.write(0.0);
dreschpe 0:18e4a9c978ec 39 }
dreschpe 0:18e4a9c978ec 40
dreschpe 2:a34405c20cf5 41 /** Beep with given frequency and duration.
dreschpe 3:5a8242af60ba 42 *
dreschpe 3:5a8242af60ba 43 * @param frequency - the frequency of the tone in Hz
dreschpe 3:5a8242af60ba 44 * @param time - the duration of the tone in seconds
dreschpe 3:5a8242af60ba 45 */
dreschpe 2:a34405c20cf5 46
dreschpe 0:18e4a9c978ec 47 void Beep::beep(float freq, float time) {
dreschpe 0:18e4a9c978ec 48
dreschpe 0:18e4a9c978ec 49 _pwm.period(1.0/freq);
dreschpe 0:18e4a9c978ec 50 _pwm.write(0.5); // 50% duty cycle - beep on
dreschpe 0:18e4a9c978ec 51 toff.attach(this,&Beep::nobeep, time); // time to off
dreschpe 0:18e4a9c978ec 52 }
dreschpe 0:18e4a9c978ec 53
dreschpe 0:18e4a9c978ec 54
dreschpe 0:18e4a9c978ec 55
dreschpe 0:18e4a9c978ec 56