Stage-1 Students SoCEM
/
ROCO104_base_Template
For 1st Year ROCO104
pwm_tone.cpp@4:8249fab4d8d3, 2019-02-01 (annotated)
- Committer:
- martinsimpson
- Date:
- Fri Feb 01 16:29:52 2019 +0000
- Revision:
- 4:8249fab4d8d3
- Parent:
- 0:51c12cc34baf
Base template for ROCO104 first edition
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
martinsimpson | 0:51c12cc34baf | 1 | /* Includes ------------------------------------------------------------------*/ |
martinsimpson | 0:51c12cc34baf | 2 | #include "pwm_tone.h" |
martinsimpson | 0:51c12cc34baf | 3 | |
martinsimpson | 0:51c12cc34baf | 4 | /* Private typedef -----------------------------------------------------------*/ |
martinsimpson | 0:51c12cc34baf | 5 | /* Private define ------------------------------------------------------------*/ |
martinsimpson | 0:51c12cc34baf | 6 | /* Private variables ---------------------------------------------------------*/ |
martinsimpson | 0:51c12cc34baf | 7 | /* Private function prototypes -----------------------------------------------*/ |
martinsimpson | 0:51c12cc34baf | 8 | /* Private functions ---------------------------------------------------------*/ |
martinsimpson | 0:51c12cc34baf | 9 | |
martinsimpson | 0:51c12cc34baf | 10 | /** |
martinsimpson | 0:51c12cc34baf | 11 | * @brief Tune Function |
martinsimpson | 0:51c12cc34baf | 12 | * @param name : Choose the PwmOut |
martinsimpson | 0:51c12cc34baf | 13 | period : this param is tune value. (C_3...B_5) |
martinsimpson | 0:51c12cc34baf | 14 | beat : this param is beat value. (1..16) 1 means 1/16 beat |
martinsimpson | 0:51c12cc34baf | 15 | * @retval None |
martinsimpson | 0:51c12cc34baf | 16 | */ |
martinsimpson | 0:51c12cc34baf | 17 | void Tune(PwmOut name, int period, int beat) |
martinsimpson | 0:51c12cc34baf | 18 | { |
martinsimpson | 0:51c12cc34baf | 19 | int delay; |
martinsimpson | 0:51c12cc34baf | 20 | |
martinsimpson | 0:51c12cc34baf | 21 | delay = beat*63; |
martinsimpson | 0:51c12cc34baf | 22 | name.period_us(period); |
martinsimpson | 0:51c12cc34baf | 23 | name.write(0.50f); // 50% duty cycle |
martinsimpson | 0:51c12cc34baf | 24 | wait_ms(delay); // 1 beat |
martinsimpson | 0:51c12cc34baf | 25 | //name.period_us(0); // Sound off |
martinsimpson | 0:51c12cc34baf | 26 | name=0; |
martinsimpson | 0:51c12cc34baf | 27 | } |
martinsimpson | 0:51c12cc34baf | 28 | |
martinsimpson | 0:51c12cc34baf | 29 | /** |
martinsimpson | 0:51c12cc34baf | 30 | * @brief Auto tunes Function |
martinsimpson | 0:51c12cc34baf | 31 | * @param name : Choose the PwmOut |
martinsimpson | 0:51c12cc34baf | 32 | period : this param is tune value. (C_3...B_5) |
martinsimpson | 0:51c12cc34baf | 33 | beat : this param is beat value. (1..16) 1 means 1/16 beat |
martinsimpson | 0:51c12cc34baf | 34 | * @retval None |
martinsimpson | 0:51c12cc34baf | 35 | */ |
martinsimpson | 0:51c12cc34baf | 36 | void Auto_tunes(PwmOut name, int period, int beat) |
martinsimpson | 0:51c12cc34baf | 37 | { |
martinsimpson | 0:51c12cc34baf | 38 | int delay; |
martinsimpson | 0:51c12cc34baf | 39 | |
martinsimpson | 0:51c12cc34baf | 40 | delay = beat*63; |
martinsimpson | 0:51c12cc34baf | 41 | name.period_us(period); |
martinsimpson | 0:51c12cc34baf | 42 | name.write(0.50f); // 50% duty cycle |
martinsimpson | 0:51c12cc34baf | 43 | wait_ms(delay); |
martinsimpson | 0:51c12cc34baf | 44 | } |
martinsimpson | 0:51c12cc34baf | 45 | |
martinsimpson | 0:51c12cc34baf | 46 | /** |
martinsimpson | 0:51c12cc34baf | 47 | * @brief Stop tunes Function |
martinsimpson | 0:51c12cc34baf | 48 | * @param name : Choose the PwmOut |
martinsimpson | 0:51c12cc34baf | 49 | * @retval None |
martinsimpson | 0:51c12cc34baf | 50 | */ |
martinsimpson | 0:51c12cc34baf | 51 | void Stop_tunes(PwmOut name) |
martinsimpson | 0:51c12cc34baf | 52 | { |
martinsimpson | 0:51c12cc34baf | 53 | name.period_us(0); |
martinsimpson | 0:51c12cc34baf | 54 | } |