Resit Target Localisation Ciaran Kane 18689005

Dependencies:   mbed

Committer:
ciarankane123
Date:
Thu Aug 25 13:50:39 2022 +0000
Revision:
7:acf82069b794
Final Code;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ciarankane123 7:acf82069b794 1 /*
ciarankane123 7:acf82069b794 2 * Mbed library program
ciarankane123 7:acf82069b794 3 * Control Piezo Transducer
ciarankane123 7:acf82069b794 4 *
ciarankane123 7:acf82069b794 5 * Copyright (c) 2018 Kenji Arai / JH1PJL
ciarankane123 7:acf82069b794 6 * http://www.page.sannet.ne.jp/kenjia/index.html
ciarankane123 7:acf82069b794 7 * http://mbed.org/users/kenjiArai/
ciarankane123 7:acf82069b794 8 * Created: Feburary 28th, 2018
ciarankane123 7:acf82069b794 9 * Revised: March 3rd, 2018
ciarankane123 7:acf82069b794 10 */
ciarankane123 7:acf82069b794 11
ciarankane123 7:acf82069b794 12 // Tested: Nucleo-F446RE with Akizuki PT08-Z185R
ciarankane123 7:acf82069b794 13 // http://akizukidenshi.com/catalog/g/gP-01251/
ciarankane123 7:acf82069b794 14
ciarankane123 7:acf82069b794 15 /*
ciarankane123 7:acf82069b794 16 Refrence:
ciarankane123 7:acf82069b794 17 https://os.mbed.com/users/MikamiUitOpen/code/UIT_Sounder_OnOff/
ciarankane123 7:acf82069b794 18 by 不韋 呂 さん(Mikami-san)
ciarankane123 7:acf82069b794 19 */
ciarankane123 7:acf82069b794 20
ciarankane123 7:acf82069b794 21 #ifndef MBED_PIEZOBZ_H
ciarankane123 7:acf82069b794 22 #define MBED_PIEZOBZ_H
ciarankane123 7:acf82069b794 23
ciarankane123 7:acf82069b794 24 #include "mbed.h"
ciarankane123 7:acf82069b794 25
ciarankane123 7:acf82069b794 26 /** Interface for Piezo Buzzer
ciarankane123 7:acf82069b794 27 *
ciarankane123 7:acf82069b794 28 * @code
ciarankane123 7:acf82069b794 29 * #include "mbed.h"
ciarankane123 7:acf82069b794 30 * #include "piezo_bz.h"
ciarankane123 7:acf82069b794 31 *
ciarankane123 7:acf82069b794 32 * PIEZO_BZ bz(D8, 3000U, 500U); // 3kHz 0.5 sec duty
ciarankane123 7:acf82069b794 33 *
ciarankane123 7:acf82069b794 34 * int main() {
ciarankane123 7:acf82069b794 35 * while(1) {
ciarankane123 7:acf82069b794 36 * bz.start();
ciarankane123 7:acf82069b794 37 * wait(5.0f);
ciarankane123 7:acf82069b794 38 * bz.stop();
ciarankane123 7:acf82069b794 39 * wait(1.0f);
ciarankane123 7:acf82069b794 40 * }
ciarankane123 7:acf82069b794 41 * }
ciarankane123 7:acf82069b794 42 *
ciarankane123 7:acf82069b794 43 * @endcode
ciarankane123 7:acf82069b794 44 */
ciarankane123 7:acf82069b794 45
ciarankane123 7:acf82069b794 46 #define CONTINUOUS_MODE 0U
ciarankane123 7:acf82069b794 47
ciarankane123 7:acf82069b794 48 /** Piezo Buzzer class
ciarankane123 7:acf82069b794 49 */
ciarankane123 7:acf82069b794 50 class PIEZO_BZ
ciarankane123 7:acf82069b794 51 {
ciarankane123 7:acf82069b794 52 public:
ciarankane123 7:acf82069b794 53
ciarankane123 7:acf82069b794 54 /** Create a Piezo Buzzer instance
ciarankane123 7:acf82069b794 55 *
ciarankane123 7:acf82069b794 56 * @param pin for Piezo Buzzer (another pin connect GND)
ciarankane123 7:acf82069b794 57 * @param Buzzer frequency [Hz]
ciarankane123 7:acf82069b794 58 * @param Duration for ringing time and rest time (duty 50%) [mS]
ciarankane123 7:acf82069b794 59 * on_off_time = 0 -> Continuous mode
ciarankane123 7:acf82069b794 60 */
ciarankane123 7:acf82069b794 61 PIEZO_BZ(PinName pin, uint32_t freq, uint32_t on_off_time);
ciarankane123 7:acf82069b794 62
ciarankane123 7:acf82069b794 63 /** Destructor of Piezo Buzzer
ciarankane123 7:acf82069b794 64 */
ciarankane123 7:acf82069b794 65 virtual ~PIEZO_BZ();
ciarankane123 7:acf82069b794 66
ciarankane123 7:acf82069b794 67 /** Start Buzzer
ciarankane123 7:acf82069b794 68 */
ciarankane123 7:acf82069b794 69 void start(void);
ciarankane123 7:acf82069b794 70
ciarankane123 7:acf82069b794 71 /** Stop Buzzer
ciarankane123 7:acf82069b794 72 */
ciarankane123 7:acf82069b794 73 void stop(void);
ciarankane123 7:acf82069b794 74
ciarankane123 7:acf82069b794 75 /** Change buzzer frequency
ciarankane123 7:acf82069b794 76 * @param Buzzer frequency [Hz]
ciarankane123 7:acf82069b794 77 */
ciarankane123 7:acf82069b794 78 void change_frequency(uint32_t freq);
ciarankane123 7:acf82069b794 79
ciarankane123 7:acf82069b794 80 /** Change On-Off duration
ciarankane123 7:acf82069b794 81 * @param Duration for ringing time and rest time (duty 50%) [mS]
ciarankane123 7:acf82069b794 82 */
ciarankane123 7:acf82069b794 83 void change_on_off(uint32_t on_off_time);
ciarankane123 7:acf82069b794 84
ciarankane123 7:acf82069b794 85 private:
ciarankane123 7:acf82069b794 86 void create_freq_irq(void);
ciarankane123 7:acf82069b794 87 void create_onoff_irq(void);
ciarankane123 7:acf82069b794 88
ciarankane123 7:acf82069b794 89 DigitalOut _pin;
ciarankane123 7:acf82069b794 90 Ticker _t0;
ciarankane123 7:acf82069b794 91 Ticker _t1;
ciarankane123 7:acf82069b794 92 uint32_t freq;
ciarankane123 7:acf82069b794 93 uint32_t t_onoff;
ciarankane123 7:acf82069b794 94 bool out;
ciarankane123 7:acf82069b794 95 bool flag_onoff;
ciarankane123 7:acf82069b794 96 bool flag_run;
ciarankane123 7:acf82069b794 97 bool flag_continuous;
ciarankane123 7:acf82069b794 98 };
ciarankane123 7:acf82069b794 99
ciarankane123 7:acf82069b794 100 #endif // MBED_PIEZOBZ_H