First commit. Non blocking Led and Buzzer library
Dependents: non_blocking_Led_Buzze_HelloWorld
Buzzer.h@0:c18c119011ec, 2016-11-21 (annotated)
- Committer:
- tsungta
- Date:
- Mon Nov 21 06:40:27 2016 +0000
- Revision:
- 0:c18c119011ec
Library for non blocking Led and Buzzer controller
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tsungta | 0:c18c119011ec | 1 | /******************** (C) COPYRIGHT 2016 Delta Electronics, Inc. *************** |
tsungta | 0:c18c119011ec | 2 | * |
tsungta | 0:c18c119011ec | 3 | * File Name : Buzzer.h |
tsungta | 0:c18c119011ec | 4 | * Authors : Tsungta Wu - CPBG (tsungta.wu@deltaww.com) |
tsungta | 0:c18c119011ec | 5 | * Version : V.1.0.1 |
tsungta | 0:c18c119011ec | 6 | * Date : 2016/Nov/14 |
tsungta | 0:c18c119011ec | 7 | * |
tsungta | 0:c18c119011ec | 8 | *******************************************************************************/ |
tsungta | 0:c18c119011ec | 9 | |
tsungta | 0:c18c119011ec | 10 | /** class to make sound and play melody with a buzzer using PWM |
tsungta | 0:c18c119011ec | 11 | * The class use a timer to change tone - it is not blocking while playing melody |
tsungta | 0:c18c119011ec | 12 | * |
tsungta | 0:c18c119011ec | 13 | * Example: |
tsungta | 0:c18c119011ec | 14 | * @code |
tsungta | 0:c18c119011ec | 15 | * #include "mbed.h" |
tsungta | 0:c18c119011ec | 16 | * #include "Buzzer.h" |
tsungta | 0:c18c119011ec | 17 | * |
tsungta | 0:c18c119011ec | 18 | * Buzzer buzzer(p21); |
tsungta | 0:c18c119011ec | 19 | * |
tsungta | 0:c18c119011ec | 20 | *#define tone_num 5 |
tsungta | 0:c18c119011ec | 21 | *float tone[tone_num] = {262, 294, 330, 349, 392}; |
tsungta | 0:c18c119011ec | 22 | |
tsungta | 0:c18c119011ec | 23 | * int main() { |
tsungta | 0:c18c119011ec | 24 | * ... |
tsungta | 0:c18c119011ec | 25 | * buzzer.simpleBeep(1000,0.5); //beep frequency at 1KHz for 0.5 second |
tsungta | 0:c18c119011ec | 26 | * ... |
tsungta | 0:c18c119011ec | 27 | * buzzer.playMelody(tone, tone_num, 0.5); //play do re mi fa so change tone every 0.5 second |
tsungta | 0:c18c119011ec | 28 | * ... |
tsungta | 0:c18c119011ec | 29 | * } |
tsungta | 0:c18c119011ec | 30 | * @endcode |
tsungta | 0:c18c119011ec | 31 | */ |
tsungta | 0:c18c119011ec | 32 | |
tsungta | 0:c18c119011ec | 33 | #ifndef MBED_BUZZER_H |
tsungta | 0:c18c119011ec | 34 | #define MBED_BUZZER_H |
tsungta | 0:c18c119011ec | 35 | |
tsungta | 0:c18c119011ec | 36 | #include "mbed.h" |
tsungta | 0:c18c119011ec | 37 | |
tsungta | 0:c18c119011ec | 38 | namespace mbed { |
tsungta | 0:c18c119011ec | 39 | |
tsungta | 0:c18c119011ec | 40 | /* Class: Buzzer |
tsungta | 0:c18c119011ec | 41 | * A class witch uses PwmOut to play sounds. |
tsungta | 0:c18c119011ec | 42 | * The class use a timer to change tone - it is not blocking |
tsungta | 0:c18c119011ec | 43 | */ |
tsungta | 0:c18c119011ec | 44 | class Buzzer { |
tsungta | 0:c18c119011ec | 45 | |
tsungta | 0:c18c119011ec | 46 | public: |
tsungta | 0:c18c119011ec | 47 | |
tsungta | 0:c18c119011ec | 48 | /** Create a Buzzer object connected to the specified GPIO pin |
tsungta | 0:c18c119011ec | 49 | * |
tsungta | 0:c18c119011ec | 50 | * @param pin GPIO pin to connect to |
tsungta | 0:c18c119011ec | 51 | * @param debug GPIO uart tx pin used to print debug message (reserved) |
tsungta | 0:c18c119011ec | 52 | */ |
tsungta | 0:c18c119011ec | 53 | Buzzer (PinName pin); |
tsungta | 0:c18c119011ec | 54 | |
tsungta | 0:c18c119011ec | 55 | /** Beep with given frequency and duration. |
tsungta | 0:c18c119011ec | 56 | * |
tsungta | 0:c18c119011ec | 57 | * @param frequency - the frequency of the tone in Hz |
tsungta | 0:c18c119011ec | 58 | * @param time - the duration of the tone in seconds |
tsungta | 0:c18c119011ec | 59 | */ |
tsungta | 0:c18c119011ec | 60 | void simpleBeep (float frequency, float time); |
tsungta | 0:c18c119011ec | 61 | |
tsungta | 0:c18c119011ec | 62 | /** Play melody with given frequency and interval. |
tsungta | 0:c18c119011ec | 63 | * |
tsungta | 0:c18c119011ec | 64 | * @param tone_freq - the frequency of each tone in Hz |
tsungta | 0:c18c119011ec | 65 | * @param tone_num - the total number of the given tones |
tsungta | 0:c18c119011ec | 66 | * @param tone_time - the duration of each tone in seconds |
tsungta | 0:c18c119011ec | 67 | */ |
tsungta | 0:c18c119011ec | 68 | void playMelody (float* tone_freq, uint16_t tone_num,float tone_time); |
tsungta | 0:c18c119011ec | 69 | |
tsungta | 0:c18c119011ec | 70 | /** stop the Buzzer instantaneous |
tsungta | 0:c18c119011ec | 71 | * usually not used |
tsungta | 0:c18c119011ec | 72 | */ |
tsungta | 0:c18c119011ec | 73 | void stopBuzzer(); |
tsungta | 0:c18c119011ec | 74 | |
tsungta | 0:c18c119011ec | 75 | private : |
tsungta | 0:c18c119011ec | 76 | |
tsungta | 0:c18c119011ec | 77 | void nextTone(); |
tsungta | 0:c18c119011ec | 78 | PwmOut _pwm; |
tsungta | 0:c18c119011ec | 79 | Timeout tnext; |
tsungta | 0:c18c119011ec | 80 | PinName _debug; |
tsungta | 0:c18c119011ec | 81 | }; |
tsungta | 0:c18c119011ec | 82 | |
tsungta | 0:c18c119011ec | 83 | } |
tsungta | 0:c18c119011ec | 84 | #endif |
tsungta | 0:c18c119011ec | 85 |