(DA) Internet of Things and Smart Electronics- ELE3006M2122
/
18689004Coursework
Coursework
Piezo.h@45:f1db729741f7, 2022-02-04 (annotated)
- Committer:
- sesa514652
- Date:
- Fri Feb 04 16:44:14 2022 +0000
- Revision:
- 45:f1db729741f7
- Parent:
- 3:6ecb75a2675c
Submission
Who changed what in which revision?
User | Revision | Line number | New 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 |