TVZ Mechatronics Team
/
Star_Wars_The_Imperial_March
Star_Wars_The_Imperial_March Piezo Buzzer Song
main.cpp@0:de84a99fc49f, 2019-11-18 (annotated)
- Committer:
- dfraj
- Date:
- Mon Nov 18 12:58:22 2019 +0000
- Revision:
- 0:de84a99fc49f
Star Wars - The Imperial March Piezo Buzzer Song
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dfraj | 0:de84a99fc49f | 1 | #include "mbed.h" |
dfraj | 0:de84a99fc49f | 2 | |
dfraj | 0:de84a99fc49f | 3 | PwmOut speaker(p26); |
dfraj | 0:de84a99fc49f | 4 | AnalogIn pot1(p19); |
dfraj | 0:de84a99fc49f | 5 | AnalogIn pot2(p20); |
dfraj | 0:de84a99fc49f | 6 | DigitalIn joystickCenter(p14); |
dfraj | 0:de84a99fc49f | 7 | |
dfraj | 0:de84a99fc49f | 8 | int main() { |
dfraj | 0:de84a99fc49f | 9 | // note frequencies in Hz |
dfraj | 0:de84a99fc49f | 10 | // rows: C C# D Eb E F F# G G# A Bb B |
dfraj | 0:de84a99fc49f | 11 | //columns: 0 1 2 3 4 5 6 7 8 |
dfraj | 0:de84a99fc49f | 12 | |
dfraj | 0:de84a99fc49f | 13 | enum noteNames {C, Cs, D, Eb, E, F, Fs, G, Gs, A, Bb, B}; |
dfraj | 0:de84a99fc49f | 14 | float nt[12][9] = { {16.35}, {17.32}, {18.35}, {19.45}, {20.60}, {21.83}, |
dfraj | 0:de84a99fc49f | 15 | {23.12}, {24.5}, {25.96}, {27.5}, {29.14}, {30.87} }; |
dfraj | 0:de84a99fc49f | 16 | for (int i = 0; i < 12; i++) |
dfraj | 0:de84a99fc49f | 17 | for (int j = 1; j < 9; j++) |
dfraj | 0:de84a99fc49f | 18 | nt[i][j] = nt[i][j-1] * 2; |
dfraj | 0:de84a99fc49f | 19 | |
dfraj | 0:de84a99fc49f | 20 | while(1) { |
dfraj | 0:de84a99fc49f | 21 | //int scale = pot2 * 8; |
dfraj | 0:de84a99fc49f | 22 | float speed = 0.05 + pot1; // minimum wait is 50 ms |
dfraj | 0:de84a99fc49f | 23 | float notesCiciban[] = {nt[A][1], 0, nt[A][1], 0, nt[A][1], 0, |
dfraj | 0:de84a99fc49f | 24 | nt[F][1], 0, nt[C][2], 0, nt[A][1], 0, |
dfraj | 0:de84a99fc49f | 25 | nt[F][1], 0, nt[C][2], 0, nt[A][1], 0, |
dfraj | 0:de84a99fc49f | 26 | nt[E][2], 0, nt[E][2], 0, nt[E][2], 0, |
dfraj | 0:de84a99fc49f | 27 | nt[F][2], 0, nt[C][2], 0, nt[Gs][1], 0, |
dfraj | 0:de84a99fc49f | 28 | nt[F][1], 0, nt[C][2], 0, nt[A][1], 0, |
dfraj | 0:de84a99fc49f | 29 | nt[A][2], 0, nt[A][1], 0, nt[A][1], 0, |
dfraj | 0:de84a99fc49f | 30 | nt[A][2], 0, nt[Gs][2], 0, nt[G][2], 0, |
dfraj | 0:de84a99fc49f | 31 | nt[Fs][2], 0, nt[F][2], 0, nt[Fs][2], 0, |
dfraj | 0:de84a99fc49f | 32 | nt[Bb][1], 0, nt[Eb][2], 0, nt[D][2], 0, |
dfraj | 0:de84a99fc49f | 33 | nt[Cs][2], 0, nt[C][2], 0, nt[B][1], 0, |
dfraj | 0:de84a99fc49f | 34 | nt[C][2], 0, nt[F][1], 0, nt[Gs][1], 0, |
dfraj | 0:de84a99fc49f | 35 | nt[F][1], 0, nt[Gs][1], 0, nt[C][2], 0, |
dfraj | 0:de84a99fc49f | 36 | nt[A][1], 0, nt[C][2], 0, nt[E][2], 0, |
dfraj | 0:de84a99fc49f | 37 | nt[A][2], 0, nt[A][1], 0, nt[A][1], 0, |
dfraj | 0:de84a99fc49f | 38 | nt[A][2], 0, nt[Gs][2], 0, nt[G][2], 0, |
dfraj | 0:de84a99fc49f | 39 | nt[Fs][2], 0, nt[F][2], 0, nt[Fs][2], 0, |
dfraj | 0:de84a99fc49f | 40 | nt[Bb][1], 0, nt[Eb][2], 0, nt[D][2], 0, |
dfraj | 0:de84a99fc49f | 41 | nt[Cs][2], 0,}; |
dfraj | 0:de84a99fc49f | 42 | float beatCiciban[] = {1, 0.5, 1, 0.5, 1, 0.5, |
dfraj | 0:de84a99fc49f | 43 | 0.5, 0.5, 0.5, 0.5, 1, 0.5, |
dfraj | 0:de84a99fc49f | 44 | 0.5, 0.5, 0.5, 0.5, 2, 0.5, |
dfraj | 0:de84a99fc49f | 45 | 1, 0.5, 1, 0.5, 1, 0.5, |
dfraj | 0:de84a99fc49f | 46 | 0.5, 0.5, 0.5, 0.5, 1, 0.5, |
dfraj | 0:de84a99fc49f | 47 | 0.5, 0.5, 0.5, 0.5, 2, 0.5, |
dfraj | 0:de84a99fc49f | 48 | 1, 0.5, 0.5, 0.5, 0.5, 0.5, |
dfraj | 0:de84a99fc49f | 49 | 1, 0.5, 0.5, 0.5, 0.5, 0.5, |
dfraj | 0:de84a99fc49f | 50 | 0.25, 0.5, 0.25, 0.5, 0.25, 0.5, |
dfraj | 0:de84a99fc49f | 51 | 0.25, 0.5, 1, 0.5, 0.5, 0.5, |
dfraj | 0:de84a99fc49f | 52 | 0.5, 0.5, 0.25, 0.5, 0.25, 0.5, |
dfraj | 0:de84a99fc49f | 53 | 0.25, 0.5, 0.25, 0.5, 1, 0.5, |
dfraj | 0:de84a99fc49f | 54 | 0.5, 0.5, 0.5, 0.5, 1, 0.5, |
dfraj | 0:de84a99fc49f | 55 | 0.5, 0.5, 0.5, 0.5, 2, 0.5, |
dfraj | 0:de84a99fc49f | 56 | 1, 0.5, 0.5, 0.5, 0.5, 0.5, |
dfraj | 0:de84a99fc49f | 57 | 1, 0.5, 0.5, 0.5, 0.5, 0.5, |
dfraj | 0:de84a99fc49f | 58 | 0.25, 0.5, 0.25, 0.5, 0.25, 0.5, |
dfraj | 0:de84a99fc49f | 59 | 0.25, 0.5, 1, 0.5, 0.5, 0.5, |
dfraj | 0:de84a99fc49f | 60 | 0.5, 0.5}; |
dfraj | 0:de84a99fc49f | 61 | |
dfraj | 0:de84a99fc49f | 62 | for (int i = 0; i < 109; i++) { |
dfraj | 0:de84a99fc49f | 63 | speaker.period(1 / (4*notesCiciban[i]) ); |
dfraj | 0:de84a99fc49f | 64 | speaker = 0.75; |
dfraj | 0:de84a99fc49f | 65 | wait(speed * beatCiciban[i]); |
dfraj | 0:de84a99fc49f | 66 | } |
dfraj | 0:de84a99fc49f | 67 | if (joystickCenter) // press joystick center to stop playing |
dfraj | 0:de84a99fc49f | 68 | break; |
dfraj | 0:de84a99fc49f | 69 | } |
dfraj | 0:de84a99fc49f | 70 | } |