Music-Lab3

Dependencies:   mbed

Committer:
ziadeldebri
Date:
Fri Oct 07 02:59:28 2016 +0000
Revision:
0:104065487410
Simple Music Tones.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ziadeldebri 0:104065487410 1 /***************
ziadeldebri 0:104065487410 2 *Lab3 ECE111
ziadeldebri 0:104065487410 3 ****************/
ziadeldebri 0:104065487410 4
ziadeldebri 0:104065487410 5 #include "mbed.h"
ziadeldebri 0:104065487410 6
ziadeldebri 0:104065487410 7
ziadeldebri 0:104065487410 8 AnalogIn pot(PTB0);
ziadeldebri 0:104065487410 9 PwmOut Speaker(PTE31);
ziadeldebri 0:104065487410 10 InterruptIn button(PTC12);
ziadeldebri 0:104065487410 11
ziadeldebri 0:104065487410 12
ziadeldebri 0:104065487410 13
ziadeldebri 0:104065487410 14 int i,mode;
ziadeldebri 0:104065487410 15
ziadeldebri 0:104065487410 16 float freq[] = {2272, 2144, 2016, 1904, 1808, 1696, 1600, 1520, 1424, 1344, 1280, 1200, 1136, 1072,1008, 960, 896, 848, 800, 752, 704, 672,624, 592, 550};
ziadeldebri 0:104065487410 17
ziadeldebri 0:104065487410 18 float beat[] ={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
ziadeldebri 0:104065487410 19
ziadeldebri 0:104065487410 20 void flip() {
ziadeldebri 0:104065487410 21 mode = !mode;
ziadeldebri 0:104065487410 22 }
ziadeldebri 0:104065487410 23
ziadeldebri 0:104065487410 24
ziadeldebri 0:104065487410 25 int main()
ziadeldebri 0:104065487410 26 {
ziadeldebri 0:104065487410 27 mode = 1;
ziadeldebri 0:104065487410 28 button.rise(&flip); // attach the address of the flip function to the rising edge
ziadeldebri 0:104065487410 29 while (true) {
ziadeldebri 0:104065487410 30
ziadeldebri 0:104065487410 31 if(mode == 1){
ziadeldebri 0:104065487410 32 for (int i = 0; i <=20 ; i++){
ziadeldebri 0:104065487410 33 Speaker.period(1/(2*freq[i]));
ziadeldebri 0:104065487410 34 Speaker = 0.5;
ziadeldebri 0:104065487410 35 wait (0.4*beat[1]);
ziadeldebri 0:104065487410 36 if(mode == 0){break;}
ziadeldebri 0:104065487410 37 }
ziadeldebri 0:104065487410 38 }
ziadeldebri 0:104065487410 39 else if (mode == 0){
ziadeldebri 0:104065487410 40 Speaker.period(1/(pot*2000+20));
ziadeldebri 0:104065487410 41 Speaker = 0.5;
ziadeldebri 0:104065487410 42 wait (0.4*beat[1]);
ziadeldebri 0:104065487410 43
ziadeldebri 0:104065487410 44 }
ziadeldebri 0:104065487410 45
ziadeldebri 0:104065487410 46
ziadeldebri 0:104065487410 47 }
ziadeldebri 0:104065487410 48 }