First commit. Non blocking Led and Buzzer library

Dependents:   non_blocking_Led_Buzze_HelloWorld

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?

UserRevisionLine numberNew 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