Robert Tomczak
/
TP6_MarioTheme
Exemple d'utilisation MArio thème
Fork of app-shield-speaker by
main.cpp@5:d9670e532659, 2015-10-16 (annotated)
- Committer:
- rtk
- Date:
- Fri Oct 16 11:38:42 2015 +0000
- Revision:
- 5:d9670e532659
- Parent:
- 3:3bb3e6051175
TP6 mario;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chris | 0:f86c572491c3 | 1 | #include "mbed.h" |
rtk | 5:d9670e532659 | 2 | #include "pitchs.h" |
chris | 3:3bb3e6051175 | 3 | DigitalIn fire(D4); |
chris | 3:3bb3e6051175 | 4 | PwmOut spkr(D6); |
chris | 0:f86c572491c3 | 5 | |
rtk | 5:d9670e532659 | 6 | int melody[] = { |
rtk | 5:d9670e532659 | 7 | NOTE_E7, NOTE_E7, 0, NOTE_E7, |
rtk | 5:d9670e532659 | 8 | 0, NOTE_C7, NOTE_E7, 0, |
rtk | 5:d9670e532659 | 9 | NOTE_G7, 0, 0, 0, |
rtk | 5:d9670e532659 | 10 | NOTE_G6, 0, 0, 0, |
rtk | 5:d9670e532659 | 11 | |
rtk | 5:d9670e532659 | 12 | NOTE_C7, 0, 0, NOTE_G6, |
rtk | 5:d9670e532659 | 13 | 0, 0, NOTE_E6, 0, |
rtk | 5:d9670e532659 | 14 | 0, NOTE_A6, 0, NOTE_B6, |
rtk | 5:d9670e532659 | 15 | 0, NOTE_AS6, NOTE_A6, 0, |
rtk | 5:d9670e532659 | 16 | |
rtk | 5:d9670e532659 | 17 | NOTE_G6, NOTE_E7, NOTE_G7, |
rtk | 5:d9670e532659 | 18 | NOTE_A7, 0, NOTE_F7, NOTE_G7, |
rtk | 5:d9670e532659 | 19 | 0, NOTE_E7, 0,NOTE_C7, |
rtk | 5:d9670e532659 | 20 | NOTE_D7, NOTE_B6, 0, 0, |
rtk | 5:d9670e532659 | 21 | |
rtk | 5:d9670e532659 | 22 | NOTE_C7, 0, 0, NOTE_G6, |
rtk | 5:d9670e532659 | 23 | 0, 0, NOTE_E6, 0, |
rtk | 5:d9670e532659 | 24 | 0, NOTE_A6, 0, NOTE_B6, |
rtk | 5:d9670e532659 | 25 | 0, NOTE_AS6, NOTE_A6, 0, |
rtk | 5:d9670e532659 | 26 | |
rtk | 5:d9670e532659 | 27 | NOTE_G6, NOTE_E7, NOTE_G7, |
rtk | 5:d9670e532659 | 28 | NOTE_A7, 0, NOTE_F7, NOTE_G7, |
rtk | 5:d9670e532659 | 29 | 0, NOTE_E7, 0,NOTE_C7, |
rtk | 5:d9670e532659 | 30 | NOTE_D7, NOTE_B6, 0, 0 |
rtk | 5:d9670e532659 | 31 | }; |
rtk | 5:d9670e532659 | 32 | //Mario main them tempo |
rtk | 5:d9670e532659 | 33 | // note durations: 4 = quarter note, 8 = eighth note, etc.: |
rtk | 5:d9670e532659 | 34 | int noteDurations[] = { |
rtk | 5:d9670e532659 | 35 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 36 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 37 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 38 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 39 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 40 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 41 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 42 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 43 | 9, 9, 9, |
rtk | 5:d9670e532659 | 44 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 45 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 46 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 47 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 48 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 49 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 50 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 51 | 9, 9, 9, |
rtk | 5:d9670e532659 | 52 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 53 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 54 | 12, 12, 12, 12, |
rtk | 5:d9670e532659 | 55 | }; |
rtk | 5:d9670e532659 | 56 | |
rtk | 5:d9670e532659 | 57 | |
rtk | 5:d9670e532659 | 58 | |
rtk | 5:d9670e532659 | 59 | |
chris | 0:f86c572491c3 | 60 | int main() |
chris | 0:f86c572491c3 | 61 | { |
rtk | 5:d9670e532659 | 62 | int size = sizeof(melody) / sizeof(int); |
chris | 2:cfd337edff08 | 63 | while (1) { |
rtk | 5:d9670e532659 | 64 | for (int thisNote = 0; thisNote < 52; thisNote++) { |
rtk | 5:d9670e532659 | 65 | // to calculate the note duration, take one second |
rtk | 5:d9670e532659 | 66 | // divided by the note type. |
rtk | 5:d9670e532659 | 67 | //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. |
rtk | 5:d9670e532659 | 68 | int noteDuration = noteDurations[thisNote]; |
rtk | 5:d9670e532659 | 69 | //tone(8, melody[thisNote],noteDuration); |
rtk | 5:d9670e532659 | 70 | spkr.period(1.0/melody[thisNote]); |
rtk | 5:d9670e532659 | 71 | spkr=0.25; |
rtk | 5:d9670e532659 | 72 | wait(1.0/noteDuration); |
rtk | 5:d9670e532659 | 73 | //wait(1); |
rtk | 5:d9670e532659 | 74 | // to distinguish the notes, set a minimum time between them. |
rtk | 5:d9670e532659 | 75 | // the note's duration + 30% seems to work well: |
rtk | 5:d9670e532659 | 76 | int pauseBetweenNotes = noteDuration * 1.30; |
rtk | 5:d9670e532659 | 77 | //wait(pauseBetweenNotes/1000); |
rtk | 5:d9670e532659 | 78 | wait(1.0/pauseBetweenNotes); |
rtk | 5:d9670e532659 | 79 | // stop the tone playing: |
rtk | 5:d9670e532659 | 80 | //noTone(8); |
rtk | 5:d9670e532659 | 81 | spkr=0; |
rtk | 5:d9670e532659 | 82 | |
rtk | 5:d9670e532659 | 83 | |
chris | 2:cfd337edff08 | 84 | } |
rtk | 5:d9670e532659 | 85 | while(!fire) {wait(0.1);} |
rtk | 5:d9670e532659 | 86 | } |
chris | 0:f86c572491c3 | 87 | } |