Coursework

Committer:
sesa514652
Date:
Thu Dec 16 16:20:11 2021 +0000
Revision:
3:6ecb75a2675c
Piezo double beep

Who changed what in which revision?

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