music player, led, motor

Dependencies:   LSM9DS1_Library_cal RPCInterface final mbed

Fork of final_mbed by Team X

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?

UserRevisionLine numberNew 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