Simple tool for PWM piezo speaker

Committer:
TeaPack_CZ
Date:
Sat Oct 01 21:24:26 2016 +0000
Revision:
3:df1e38c2c57b
Parent:
2:fa6d9a0b66fc
Add documentation for public functions.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TeaPack_CZ 0:39de01daa2de 1 #ifndef PIEZO
TeaPack_CZ 0:39de01daa2de 2 #define PIEZO
TeaPack_CZ 0:39de01daa2de 3
TeaPack_CZ 0:39de01daa2de 4 #include "mbed.h"
TeaPack_CZ 0:39de01daa2de 5
TeaPack_CZ 2:fa6d9a0b66fc 6 /** Class for the PWM Piezo speaker.
TeaPack_CZ 2:fa6d9a0b66fc 7 * This class is using PWM to make sounds with piezo speaker.
TeaPack_CZ 2:fa6d9a0b66fc 8 * Currently tested with LPC1768.\n\n
TeaPack_CZ 2:fa6d9a0b66fc 9 *
TeaPack_CZ 2:fa6d9a0b66fc 10 *
TeaPack_CZ 2:fa6d9a0b66fc 11 * Writen by: Jan Crha (TeaPack_CZ), 2016.
TeaPack_CZ 2:fa6d9a0b66fc 12 *
TeaPack_CZ 2:fa6d9a0b66fc 13 * Last modified: 2016-10-01
TeaPack_CZ 2:fa6d9a0b66fc 14 *
TeaPack_CZ 2:fa6d9a0b66fc 15 * Example:
TeaPack_CZ 2:fa6d9a0b66fc 16 * @code
TeaPack_CZ 2:fa6d9a0b66fc 17 * #include "mbed.h"
TeaPack_CZ 2:fa6d9a0b66fc 18 * #include "Piezo.h"
TeaPack_CZ 2:fa6d9a0b66fc 19 *
TeaPack_CZ 2:fa6d9a0b66fc 20 * Piezo PS(p21);
TeaPack_CZ 2:fa6d9a0b66fc 21 *
TeaPack_CZ 2:fa6d9a0b66fc 22 * int main(){
TeaPack_CZ 2:fa6d9a0b66fc 23 * int playTime = 120;
TeaPack_CZ 2:fa6d9a0b66fc 24 *
TeaPack_CZ 2:fa6d9a0b66fc 25 * for(int i=0; i<2; i++)
TeaPack_CZ 2:fa6d9a0b66fc 26 * {
TeaPack_CZ 2:fa6d9a0b66fc 27 * PS.play(466.16,playTime);
TeaPack_CZ 2:fa6d9a0b66fc 28 * wait_ms(playTime);
TeaPack_CZ 2:fa6d9a0b66fc 29 * PS.play(415.30,playTime);
TeaPack_CZ 2:fa6d9a0b66fc 30 * wait_ms(playTime);
TeaPack_CZ 2:fa6d9a0b66fc 31 *
TeaPack_CZ 2:fa6d9a0b66fc 32 * PS.play(466.16,playTime);
TeaPack_CZ 2:fa6d9a0b66fc 33 * wait_ms(playTime);
TeaPack_CZ 2:fa6d9a0b66fc 34 * PS.play(349.23,playTime);
TeaPack_CZ 2:fa6d9a0b66fc 35 * wait_ms(playTime);
TeaPack_CZ 2:fa6d9a0b66fc 36 *
TeaPack_CZ 2:fa6d9a0b66fc 37 * PS.play(277.18,playTime/2);
TeaPack_CZ 2:fa6d9a0b66fc 38 * wait_ms(playTime/2);
TeaPack_CZ 2:fa6d9a0b66fc 39 * PS.play(349.23,playTime/2);
TeaPack_CZ 2:fa6d9a0b66fc 40 * wait_ms(playTime/2);
TeaPack_CZ 2:fa6d9a0b66fc 41 * wait_ms(playTime);
TeaPack_CZ 2:fa6d9a0b66fc 42 * PS.play(233.08,playTime/2);
TeaPack_CZ 2:fa6d9a0b66fc 43 * wait_ms(playTime/2);
TeaPack_CZ 2:fa6d9a0b66fc 44 *
TeaPack_CZ 2:fa6d9a0b66fc 45 * wait_ms(playTime*4);
TeaPack_CZ 2:fa6d9a0b66fc 46 * }
TeaPack_CZ 2:fa6d9a0b66fc 47 * }
TeaPack_CZ 2:fa6d9a0b66fc 48 * @endcode
TeaPack_CZ 2:fa6d9a0b66fc 49 */
TeaPack_CZ 2:fa6d9a0b66fc 50
TeaPack_CZ 2:fa6d9a0b66fc 51 class Piezo
TeaPack_CZ 2:fa6d9a0b66fc 52 {
TeaPack_CZ 0:39de01daa2de 53 public:
TeaPack_CZ 3:df1e38c2c57b 54
TeaPack_CZ 3:df1e38c2c57b 55 /** Constructor, Pin must be PWM capable*/
TeaPack_CZ 0:39de01daa2de 56 Piezo(PinName Pwmout);
TeaPack_CZ 3:df1e38c2c57b 57
TeaPack_CZ 3:df1e38c2c57b 58 /** Blocking function for playing sound of given frequency and
TeaPack_CZ 3:df1e38c2c57b 59 * duration in ms
TeaPack_CZ 3:df1e38c2c57b 60 */
TeaPack_CZ 0:39de01daa2de 61 void play(float, int);
TeaPack_CZ 3:df1e38c2c57b 62
TeaPack_CZ 3:df1e38c2c57b 63 /** Nonblocking function for playing sound of given frequency and
TeaPack_CZ 3:df1e38c2c57b 64 * duration in ms
TeaPack_CZ 3:df1e38c2c57b 65 */
TeaPack_CZ 0:39de01daa2de 66 void playAsync(float, int);
TeaPack_CZ 3:df1e38c2c57b 67
TeaPack_CZ 3:df1e38c2c57b 68 /** Function for stopping all sounds */
TeaPack_CZ 0:39de01daa2de 69 void stop();
TeaPack_CZ 3:df1e38c2c57b 70
TeaPack_CZ 0:39de01daa2de 71 private:
TeaPack_CZ 0:39de01daa2de 72 PwmOut _pwm;
TeaPack_CZ 0:39de01daa2de 73 Ticker _timer;
TeaPack_CZ 2:fa6d9a0b66fc 74
TeaPack_CZ 0:39de01daa2de 75 float Period;
TeaPack_CZ 2:fa6d9a0b66fc 76
TeaPack_CZ 0:39de01daa2de 77 float min_freq;
TeaPack_CZ 0:39de01daa2de 78 float max_freq;
TeaPack_CZ 0:39de01daa2de 79 };
TeaPack_CZ 0:39de01daa2de 80
TeaPack_CZ 0:39de01daa2de 81 #endif