Nuvoton
/
NuMaker-mbed-PWM0_playnote
NuMaker PWM0 play notes (to speaker)
main.cpp@5:45158b37892c, 2016-12-22 (annotated)
- Committer:
- shliu1
- Date:
- Thu Dec 22 15:16:56 2016 +0800
- Revision:
- 5:45158b37892c
- Parent:
- 1:8056e5d3d6f8
- Child:
- 8:7781ece6964b
Support M453, target is numaker_pfm_m453
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rkuo2000 | 0:c3a30c36f19d | 1 | //NuMaker-PFM-NUC472 PWM0 output note to a speaker |
rkuo2000 | 0:c3a30c36f19d | 2 | #include "mbed.h" |
rkuo2000 | 0:c3a30c36f19d | 3 | |
rkuo2000 | 0:c3a30c36f19d | 4 | #define _C5 523 // C5 = 523.25Hz |
rkuo2000 | 0:c3a30c36f19d | 5 | #define _D5 587 // D5 = 587.33Hz |
rkuo2000 | 0:c3a30c36f19d | 6 | #define _E5 659 // E5 = 659.26Hz |
rkuo2000 | 0:c3a30c36f19d | 7 | #define _F5 698 // F5 = 698.46Hz |
rkuo2000 | 0:c3a30c36f19d | 8 | #define _G5 784 // G5 = 783.99Hz |
rkuo2000 | 0:c3a30c36f19d | 9 | #define _A5 880 // A5 = 880.00Hz |
rkuo2000 | 0:c3a30c36f19d | 10 | #define _B5 988 // B5 = 987.77Hz |
rkuo2000 | 0:c3a30c36f19d | 11 | #define _C6 1046 // C6 = 1046.50Hz |
rkuo2000 | 0:c3a30c36f19d | 12 | #define _D6 1175 // D6 = 1174.66Hz |
rkuo2000 | 0:c3a30c36f19d | 13 | #define _E6 1319 // E6 = 1318.51Hz |
rkuo2000 | 0:c3a30c36f19d | 14 | #define _F6 1397 // F6 = 1396.91Hz |
rkuo2000 | 0:c3a30c36f19d | 15 | #define _G6 1568 // G6 = 1567.98Hz |
rkuo2000 | 0:c3a30c36f19d | 16 | #define _A6 1760 // A6 = 1760.00Hz |
rkuo2000 | 0:c3a30c36f19d | 17 | #define _B6 1976 // B6 = 1975.53Hz |
rkuo2000 | 0:c3a30c36f19d | 18 | |
shliu1 |
5:45158b37892c | 19 | #if defined(TARGET_NUMAKER_PFM_NUC472) |
rkuo2000 | 1:8056e5d3d6f8 | 20 | PwmOut pwm0(PF_9); // PWM0 pin |
shliu1 |
5:45158b37892c | 21 | #elif defined(TARGET_NUMAKER_PFM_M453) |
shliu1 |
5:45158b37892c | 22 | PwmOut pwm0(PC_6); // PWM0_pin |
shliu1 |
5:45158b37892c | 23 | #endif |
shliu1 |
5:45158b37892c | 24 | |
rkuo2000 | 0:c3a30c36f19d | 25 | |
rkuo2000 | 0:c3a30c36f19d | 26 | int main() |
rkuo2000 | 0:c3a30c36f19d | 27 | { |
rkuo2000 | 0:c3a30c36f19d | 28 | int i =0; |
rkuo2000 | 0:c3a30c36f19d | 29 | int note[15] = { // array of notes |
rkuo2000 | 0:c3a30c36f19d | 30 | _C5, _D5, _E5, _F5, _G5, _A5, _B5, |
rkuo2000 | 0:c3a30c36f19d | 31 | _C6, _D6, _E6, _F6, _G6, _A6, _B6}; |
rkuo2000 | 0:c3a30c36f19d | 32 | |
rkuo2000 | 0:c3a30c36f19d | 33 | for (i=0; i<14; i++) { |
rkuo2000 | 0:c3a30c36f19d | 34 | pwm0.period_us(1000000/note[i]); // set period per note |
rkuo2000 | 0:c3a30c36f19d | 35 | pwm0.pulsewidth_us(1000000/note[i]/2); // set duty cycle to 50% |
rkuo2000 | 0:c3a30c36f19d | 36 | Thread::wait(100); |
rkuo2000 | 0:c3a30c36f19d | 37 | } |
rkuo2000 | 0:c3a30c36f19d | 38 | pwm0.pulsewidth_us(0); // set dutycycle = 0% to stop |
rkuo2000 | 0:c3a30c36f19d | 39 | } |