Program koji koristi PWM izlaz i piezo zvučnik za sviranje
Dependencies: mbed
Fork of MAB_PWM_Speaker by
Revision 0:c84a78a490d0, committed 2014-12-18
- Comitter:
- tbjazic
- Date:
- Thu Dec 18 17:01:08 2014 +0000
- Commit message:
- Initial commit.
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r c84a78a490d0 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 18 17:01:08 2014 +0000 @@ -0,0 +1,40 @@ +#include "mbed.h" + +PwmOut speaker(p26); +AnalogIn pot1(p19); +AnalogIn pot2(p20); +DigitalIn joystickCenter(p14); + +int main() { + /* note frequencies in Hz + * rows: C C# D Eb E F F# G G# A Bb B + * columns: 0 1 2 3 4 5 6 7 8 + */ + enum noteNames {C, Cs, D, Eb, E, F, Fs, G, Gs, A, Bb, B}; + float nt[12][9] = { {16.35}, {17.32}, {18.35}, {19.45}, {20.60}, {21.83}, + {23.12}, {24.5}, {25.96}, {27.5}, {29.14}, {30.87} }; + for (int i = 0; i < 12; i++) + for (int j = 1; j < 9; j++) + nt[i][j] = nt[i][j-1] * 2; + + while(1) { + int scale = pot2 * 8; + float speed = 0.05 + pot1; // minimum wait is 50 ms + float notesCiciban[] = {nt[G][scale], 0, nt[G][scale], 0, nt[E][scale], 0, + nt[G][scale], 0, nt[G][scale], 0, nt[E][scale], 0, + nt[G][scale], 0, nt[G][scale], 0, nt[E][scale], 0, nt[E][scale], 0, + nt[G][scale], 0, nt[E][scale], 0, nt[C][scale], 0}; + float beatCiciban[] = {1, 0.5, 1, 0.5, 2, 0.5, + 1, 0.5, 1, 0.5, 2, 0.5, + 1, 0.5, 1, 0.5, 1, 0.5, 1, 0.5, + 1, 0.5, 1, 0.5, 2, 5}; + + for (int i = 0; i < 26; i++) { + speaker.period(1 / notesCiciban[i]); + speaker = 0.5; + wait(speed * beatCiciban[i]); + } + if (joystickCenter) // press joystick center to stop playing + break; + } +}
diff -r 000000000000 -r c84a78a490d0 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Dec 18 17:01:08 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5 \ No newline at end of file