Quadrifoglio / beep

Dependents:   00_yotsuba 10_motor-test 00_yotsuba 200_yotsuba_21 ... more

Committer:
piroro4560
Date:
Thu Mar 04 11:57:33 2021 +0000
Revision:
1:ed6c6a4e6101
Parent:
0:dbb0f89dc4cc
beep

Who changed what in which revision?

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