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 #include "Piezo.h"
sesa514652 3:6ecb75a2675c 2
sesa514652 3:6ecb75a2675c 3 Piezo::Piezo(PinName Pwmout):_pwm(Pwmout)
sesa514652 3:6ecb75a2675c 4 {
sesa514652 3:6ecb75a2675c 5 min_freq = 1.0;
sesa514652 3:6ecb75a2675c 6 max_freq = 20000.0;
sesa514652 3:6ecb75a2675c 7
sesa514652 3:6ecb75a2675c 8 _pwm.period(1);
sesa514652 3:6ecb75a2675c 9 _pwm.write(0.0);
sesa514652 3:6ecb75a2675c 10 }
sesa514652 3:6ecb75a2675c 11
sesa514652 3:6ecb75a2675c 12 void Piezo::play(float frequency, int duration_ms)
sesa514652 3:6ecb75a2675c 13 {
sesa514652 3:6ecb75a2675c 14 float Frequency = (frequency < min_freq)? min_freq : frequency;
sesa514652 3:6ecb75a2675c 15 Frequency = (frequency > max_freq)? max_freq : frequency;
sesa514652 3:6ecb75a2675c 16
sesa514652 3:6ecb75a2675c 17 Period = 1.0/Frequency;
sesa514652 3:6ecb75a2675c 18
sesa514652 3:6ecb75a2675c 19 _pwm.period(Period);
sesa514652 3:6ecb75a2675c 20 _pwm.write(0.5);
sesa514652 3:6ecb75a2675c 21 wait_ms(duration_ms);
sesa514652 3:6ecb75a2675c 22 _pwm.write(0.0);
sesa514652 3:6ecb75a2675c 23 }
sesa514652 3:6ecb75a2675c 24
sesa514652 3:6ecb75a2675c 25 void Piezo::playAsync(float frequency, int duration_ms)
sesa514652 3:6ecb75a2675c 26 {
sesa514652 3:6ecb75a2675c 27 float Frequency = (frequency < min_freq)? min_freq : frequency;
sesa514652 3:6ecb75a2675c 28 Frequency = (frequency > max_freq)? max_freq : frequency;
sesa514652 3:6ecb75a2675c 29
sesa514652 3:6ecb75a2675c 30 Period = 1.0/Frequency;
sesa514652 3:6ecb75a2675c 31
sesa514652 3:6ecb75a2675c 32 _pwm.period(Period);
sesa514652 3:6ecb75a2675c 33 _pwm.write(0.5);
sesa514652 3:6ecb75a2675c 34 _timer.detach();
sesa514652 3:6ecb75a2675c 35 _timer.attach_us(this,&Piezo::stop, duration_ms*1000);
sesa514652 3:6ecb75a2675c 36 }
sesa514652 3:6ecb75a2675c 37
sesa514652 3:6ecb75a2675c 38 void Piezo::stop(void)
sesa514652 3:6ecb75a2675c 39 {
sesa514652 3:6ecb75a2675c 40 _pwm.write(0.0);
sesa514652 3:6ecb75a2675c 41 }