mbed
Dependencies: LSM9DS1_Library_cal RPCInterface final mbed
Fork of SDFileSystem_HelloWorld by
main.cpp@2:55495227fcca, 2017-05-01 (annotated)
- Committer:
- mikebenq
- Date:
- Mon May 01 11:05:37 2017 +0000
- Revision:
- 2:55495227fcca
- Parent:
- 1:f54bee9d59de
Final_mbed
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mikebenq | 1:f54bee9d59de | 1 | #include "mbed.h" |
mikebenq | 2:55495227fcca | 2 | #include "VS1002.h" |
mikebenq | 2:55495227fcca | 3 | |
mikebenq | 1:f54bee9d59de | 4 | using namespace mbed; |
mikebenq | 2:55495227fcca | 5 | |
mikebenq | 2:55495227fcca | 6 | /*For Change Task*/ |
mikebenq | 2:55495227fcca | 7 | |
mikebenq | 2:55495227fcca | 8 | #define MUSIC_PLAYER 's' |
mikebenq | 2:55495227fcca | 9 | #define LED 'l' |
mikebenq | 2:55495227fcca | 10 | #define MOTOR 'm' |
mikebenq | 2:55495227fcca | 11 | volatile char task=MUSIC_PLAYER; |
mikebenq | 2:55495227fcca | 12 | /*Serial COM port*/ |
mikebenq | 2:55495227fcca | 13 | Serial pc1(USBTX, USBRX); |
mikebenq | 2:55495227fcca | 14 | Serial taskport(p28,p27); |
mikebenq | 2:55495227fcca | 15 | |
mikebenq | 2:55495227fcca | 16 | /*For Music Control*/ |
mikebenq | 2:55495227fcca | 17 | VS1002 mp3(p5, p6, p7, p8,"sd",p11, p12 ,p13, p14, p18, p19, p20, p15); |
mikebenq | 2:55495227fcca | 18 | char *song_name[6]={"Escape","Summer of 69","Monster", "Leave out all the rest","Kings","Interstellar Docking"}; //Array of song names entered manually |
mikebenq | 2:55495227fcca | 19 | int new_song_number=1; //Variable to store the Song Number |
mikebenq | 2:55495227fcca | 20 | int volume_set=-5; //Variable to store the Volume |
mikebenq | 2:55495227fcca | 21 | int previous_volume; //Variable to store the volume when muted |
mikebenq | 2:55495227fcca | 22 | bool pause=false; //Variable to store the status of Pause button |
mikebenq | 2:55495227fcca | 23 | bool mute=false; //Variable to store the status of mute button |
mikebenq | 1:f54bee9d59de | 24 | #define NEXT 7 |
mikebenq | 1:f54bee9d59de | 25 | #define PREVIOUS 8 |
mikebenq | 1:f54bee9d59de | 26 | #define PP 9 |
mikebenq | 1:f54bee9d59de | 27 | #define V_DOWN 10 |
mikebenq | 1:f54bee9d59de | 28 | #define V_UP 11 |
mikebenq | 1:f54bee9d59de | 29 | #define MUTE_UNMUTE 12 |
mikebenq | 2:55495227fcca | 30 | |
mikebenq | 2:55495227fcca | 31 | /*For LED Control*/ |
mikebenq | 2:55495227fcca | 32 | PwmOut red(p24); |
mikebenq | 2:55495227fcca | 33 | PwmOut green(p23); |
mikebenq | 2:55495227fcca | 34 | PwmOut blue(p22); |
mikebenq | 2:55495227fcca | 35 | /*For Motor Control*/ |
mikebenq | 2:55495227fcca | 36 | PwmOut fanSwitch(p21); |
mikebenq | 2:55495227fcca | 37 | /*For Debugging*/ |
mikebenq | 2:55495227fcca | 38 | DigitalOut led1(LED1); |
mikebenq | 2:55495227fcca | 39 | DigitalOut led2(LED2); |
mikebenq | 1:f54bee9d59de | 40 | |
mikebenq | 2:55495227fcca | 41 | /*For Change Task*/ |
mikebenq | 2:55495227fcca | 42 | void changeTask() |
mikebenq | 2:55495227fcca | 43 | { |
mikebenq | 2:55495227fcca | 44 | if(taskport.readable()){ |
mikebenq | 2:55495227fcca | 45 | char c=taskport.getc(); |
mikebenq | 2:55495227fcca | 46 | pc1.putc(c); |
mikebenq | 2:55495227fcca | 47 | task=c; |
mikebenq | 2:55495227fcca | 48 | } |
mikebenq | 2:55495227fcca | 49 | } |
mikebenq | 2:55495227fcca | 50 | /*For Do Different Function*/ |
mikebenq | 2:55495227fcca | 51 | void changeAction(){ |
mikebenq | 2:55495227fcca | 52 | if(pc1.readable()){ |
mikebenq | 2:55495227fcca | 53 | const char arg0=pc1.getc(); |
mikebenq | 2:55495227fcca | 54 | if(task==LED){ |
mikebenq | 2:55495227fcca | 55 | switch(arg0) |
mikebenq | 2:55495227fcca | 56 | { |
mikebenq | 2:55495227fcca | 57 | case '1': |
mikebenq | 2:55495227fcca | 58 | { |
mikebenq | 2:55495227fcca | 59 | red = 1.0; |
mikebenq | 2:55495227fcca | 60 | green = 1.0; |
mikebenq | 2:55495227fcca | 61 | blue = 1.0; |
mikebenq | 2:55495227fcca | 62 | } |
mikebenq | 2:55495227fcca | 63 | break; |
mikebenq | 2:55495227fcca | 64 | case '2': |
mikebenq | 2:55495227fcca | 65 | { |
mikebenq | 2:55495227fcca | 66 | red = 0.75; |
mikebenq | 2:55495227fcca | 67 | green = 0.75; |
mikebenq | 2:55495227fcca | 68 | blue = 0.75; |
mikebenq | 2:55495227fcca | 69 | } |
mikebenq | 2:55495227fcca | 70 | break; |
mikebenq | 2:55495227fcca | 71 | case '3': |
mikebenq | 2:55495227fcca | 72 | { |
mikebenq | 2:55495227fcca | 73 | red = 0.5; |
mikebenq | 2:55495227fcca | 74 | green = 0.5; |
mikebenq | 2:55495227fcca | 75 | blue = 0.5; |
mikebenq | 2:55495227fcca | 76 | } |
mikebenq | 2:55495227fcca | 77 | break; |
mikebenq | 2:55495227fcca | 78 | case '4': |
mikebenq | 2:55495227fcca | 79 | { |
mikebenq | 2:55495227fcca | 80 | red = 0.25; |
mikebenq | 2:55495227fcca | 81 | green = 0.25; |
mikebenq | 2:55495227fcca | 82 | blue = 0.25; |
mikebenq | 2:55495227fcca | 83 | } |
mikebenq | 2:55495227fcca | 84 | break; |
mikebenq | 1:f54bee9d59de | 85 | |
mikebenq | 2:55495227fcca | 86 | default : |
mikebenq | 2:55495227fcca | 87 | break; |
mikebenq | 2:55495227fcca | 88 | } |
mikebenq | 2:55495227fcca | 89 | led1=!led1; |
mikebenq | 2:55495227fcca | 90 | }else if(task==MOTOR){ |
mikebenq | 2:55495227fcca | 91 | switch(arg0) |
mikebenq | 2:55495227fcca | 92 | { |
mikebenq | 2:55495227fcca | 93 | case '1': |
mikebenq | 2:55495227fcca | 94 | { |
mikebenq | 2:55495227fcca | 95 | fanSwitch = 1.0; //Full Speed |
mikebenq | 2:55495227fcca | 96 | } |
mikebenq | 2:55495227fcca | 97 | break; |
mikebenq | 2:55495227fcca | 98 | case '2': |
mikebenq | 2:55495227fcca | 99 | { |
mikebenq | 2:55495227fcca | 100 | fanSwitch = 0.3; // Medium Speed |
mikebenq | 2:55495227fcca | 101 | } |
mikebenq | 2:55495227fcca | 102 | break; |
mikebenq | 2:55495227fcca | 103 | case '3': |
mikebenq | 2:55495227fcca | 104 | { |
mikebenq | 2:55495227fcca | 105 | fanSwitch = 0; // Low Speed |
mikebenq | 2:55495227fcca | 106 | } |
mikebenq | 2:55495227fcca | 107 | break; |
mikebenq | 2:55495227fcca | 108 | |
mikebenq | 2:55495227fcca | 109 | |
mikebenq | 2:55495227fcca | 110 | default : |
mikebenq | 2:55495227fcca | 111 | break; |
mikebenq | 2:55495227fcca | 112 | } |
mikebenq | 2:55495227fcca | 113 | led2=!led2; |
mikebenq | 2:55495227fcca | 114 | }else if(task==MUSIC_PLAYER) |
mikebenq | 2:55495227fcca | 115 | { |
mikebenq | 1:f54bee9d59de | 116 | int key_code=0; |
mikebenq | 2:55495227fcca | 117 | switch(arg0){ |
mikebenq | 2:55495227fcca | 118 | case '1': key_code=V_UP; break; |
mikebenq | 2:55495227fcca | 119 | case '2': key_code=V_DOWN; break; |
mikebenq | 2:55495227fcca | 120 | case '3': key_code=PP; break; |
mikebenq | 2:55495227fcca | 121 | case '4': key_code=NEXT; break; |
mikebenq | 2:55495227fcca | 122 | case '5': key_code=PREVIOUS; break; |
mikebenq | 2:55495227fcca | 123 | case '6': key_code=MUTE_UNMUTE; break; |
mikebenq | 2:55495227fcca | 124 | default : key_code=0; break; |
mikebenq | 2:55495227fcca | 125 | } |
mikebenq | 2:55495227fcca | 126 | |
mikebenq | 1:f54bee9d59de | 127 | |
mikebenq | 1:f54bee9d59de | 128 | switch(key_code) // Different cases depending on key press |
mikebenq | 2:55495227fcca | 129 | { |
mikebenq | 1:f54bee9d59de | 130 | case NEXT: |
mikebenq | 1:f54bee9d59de | 131 | pc1.printf("next\r\n"); |
mikebenq | 1:f54bee9d59de | 132 | new_song_number+=1; // Next song |
mikebenq | 1:f54bee9d59de | 133 | if(new_song_number==7) |
mikebenq | 1:f54bee9d59de | 134 | new_song_number=1; |
mikebenq | 1:f54bee9d59de | 135 | break; |
mikebenq | 1:f54bee9d59de | 136 | case PREVIOUS: |
mikebenq | 1:f54bee9d59de | 137 | pc1.printf("previous\r\n"); |
mikebenq | 1:f54bee9d59de | 138 | new_song_number-=1; // Previous Song |
mikebenq | 1:f54bee9d59de | 139 | if(new_song_number==0) |
mikebenq | 1:f54bee9d59de | 140 | new_song_number=6; |
mikebenq | 1:f54bee9d59de | 141 | break; |
mikebenq | 1:f54bee9d59de | 142 | case PP: |
mikebenq | 1:f54bee9d59de | 143 | pc1.printf("pp\r\n"); |
mikebenq | 1:f54bee9d59de | 144 | pause=!pause; // Pause/Play button |
mikebenq | 1:f54bee9d59de | 145 | break; |
mikebenq | 1:f54bee9d59de | 146 | case V_UP: |
mikebenq | 1:f54bee9d59de | 147 | pc1.printf("v_up\r\n"); |
mikebenq | 2:55495227fcca | 148 | volume_set+=10; // Volume Up |
mikebenq | 1:f54bee9d59de | 149 | if(volume_set>=0) |
mikebenq | 1:f54bee9d59de | 150 | volume_set=0; |
mikebenq | 1:f54bee9d59de | 151 | break; |
mikebenq | 1:f54bee9d59de | 152 | case V_DOWN: |
mikebenq | 1:f54bee9d59de | 153 | pc1.printf("v_down\r\n"); |
mikebenq | 2:55495227fcca | 154 | volume_set-=10; //Volume Down |
mikebenq | 1:f54bee9d59de | 155 | if(volume_set<-55) |
mikebenq | 1:f54bee9d59de | 156 | volume_set=-55; |
mikebenq | 1:f54bee9d59de | 157 | break; |
mikebenq | 1:f54bee9d59de | 158 | case MUTE_UNMUTE: |
mikebenq | 1:f54bee9d59de | 159 | pc1.printf("mute_unmute\r\n"); |
mikebenq | 1:f54bee9d59de | 160 | mute=!mute; //Mute/Unmute |
mikebenq | 1:f54bee9d59de | 161 | if(mute) |
mikebenq | 1:f54bee9d59de | 162 | { |
mikebenq | 1:f54bee9d59de | 163 | previous_volume=volume_set; // Attenuation of -55 db is small enough to not hear anything |
mikebenq | 1:f54bee9d59de | 164 | volume_set=-55; |
mikebenq | 1:f54bee9d59de | 165 | } |
mikebenq | 1:f54bee9d59de | 166 | else |
mikebenq | 1:f54bee9d59de | 167 | { |
mikebenq | 1:f54bee9d59de | 168 | volume_set=previous_volume; |
mikebenq | 1:f54bee9d59de | 169 | } |
mikebenq | 1:f54bee9d59de | 170 | break; |
mikebenq | 1:f54bee9d59de | 171 | default: ;//pc.cls(); |
mikebenq | 1:f54bee9d59de | 172 | pc1.printf("error"); // exit on error |
mikebenq | 1:f54bee9d59de | 173 | exit(1); |
mikebenq | 1:f54bee9d59de | 174 | } |
mbed_official | 0:bdbd3d6fc5d5 | 175 | |
mikebenq | 1:f54bee9d59de | 176 | /* Print to LCD the status of Song */ |
mikebenq | 1:f54bee9d59de | 177 | //pc.cls(); |
mikebenq | 1:f54bee9d59de | 178 | if(pause) |
mikebenq | 1:f54bee9d59de | 179 | pc1.printf("Paused "); |
mikebenq | 1:f54bee9d59de | 180 | if(mute) |
mikebenq | 1:f54bee9d59de | 181 | pc1.printf("Muted"); |
mikebenq | 1:f54bee9d59de | 182 | if(!mute && !pause) |
mikebenq | 1:f54bee9d59de | 183 | pc1.printf("Playing"); |
mikebenq | 1:f54bee9d59de | 184 | pc1.printf("\r\n %d %s",new_song_number,song_name[new_song_number-1]); |
mikebenq | 1:f54bee9d59de | 185 | } |
mikebenq | 2:55495227fcca | 186 | } |
mbed_official | 0:bdbd3d6fc5d5 | 187 | } |
mikebenq | 1:f54bee9d59de | 188 | int main () |
mikebenq | 1:f54bee9d59de | 189 | { |
mikebenq | 2:55495227fcca | 190 | led1=1; |
mikebenq | 2:55495227fcca | 191 | led2=1; |
mikebenq | 2:55495227fcca | 192 | pc1.printf("hello\r\n"); |
mikebenq | 1:f54bee9d59de | 193 | |
mikebenq | 1:f54bee9d59de | 194 | mp3._RST = 1; |
mikebenq | 1:f54bee9d59de | 195 | mp3.cs_high(); //chip disabled |
mikebenq | 1:f54bee9d59de | 196 | mp3.sci_initialise(); //initialise MBED |
mikebenq | 1:f54bee9d59de | 197 | mp3.sci_write(0x00,(SM_SDINEW+SM_STREAM+SM_DIFF)); |
mikebenq | 1:f54bee9d59de | 198 | mp3.sci_write(0x03, 0x9800); |
mikebenq | 1:f54bee9d59de | 199 | mp3.sdi_initialise(); |
mikebenq | 1:f54bee9d59de | 200 | |
mikebenq | 2:55495227fcca | 201 | pc1.attach(&changeAction, Serial::RxIrq);//Serial interrupt for function code |
mikebenq | 2:55495227fcca | 202 | taskport.attach(&changeTask, Serial::RxIrq);// Serial interrupt for Task code |
mikebenq | 1:f54bee9d59de | 203 | while(1) |
mikebenq | 1:f54bee9d59de | 204 | { |
mikebenq | 1:f54bee9d59de | 205 | mp3.play_song(new_song_number); |
mikebenq | 1:f54bee9d59de | 206 | } |
mikebenq | 1:f54bee9d59de | 207 | |
mikebenq | 1:f54bee9d59de | 208 | } |
mikebenq | 1:f54bee9d59de | 209 | |
mikebenq | 1:f54bee9d59de | 210 |