Décodeur MP3 de test monofichier
Dependencies: SDFileSystem TextLCD VS1053lib mbed MPR121
Fork of MP3_test by
Revision 1:d1ed30ba5ca9, committed 2016-10-30
- Comitter:
- Kamisama
- Date:
- Sun Oct 30 23:20:20 2016 +0000
- Parent:
- 0:acb04070ad91
- Commit message:
- ok
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MPR121.lib Sun Oct 30 23:20:20 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/sam_grove/code/MPR121/#eb4012317732
--- a/TextLCD.lib Wed Sep 28 18:10:24 2016 +0000 +++ b/TextLCD.lib Sun Oct 30 23:20:20 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/teams/GEII-1-Cachan/code/TextLCD/#2d87b5ec1470 +https://developer.mbed.org/teams/GEII-1-Cachan/code/TextLCD/#0e4d7bc312e3
--- a/mbed.bld Wed Sep 28 18:10:24 2016 +0000 +++ b/mbed.bld Sun Oct 30 23:20:20 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5 \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/25aea2a3f4e3 \ No newline at end of file
--- a/mp3.cpp Wed Sep 28 18:10:24 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -//******************************** -// version 27/09/16 -// G.Raynaud -//******************************** -#include "mbed.h" -#include "TextLCD.h" -#include "SDFileSystem.h" -#include <VLSIcodec.h> - -#define BUFFER_SIZE 2048 - -Serial com(USBTX, USBRX); //Initiallize the Serial Port 0 (9600 bits/sec) -unsigned char buff[BUFFER_SIZE]; -// codec -VS1053Codec codec(p11, p12, p13, p14, p16, p15, p17); // mosi, miso, sck, cs, dreq, rst, bsync -// I2C Communication -I2C i2c_lcd(p28, p27 ); // SCL, SDA -// LCD -TextLCD_I2C lcd(&i2c_lcd, 0x40, TextLCD::LCD16x2); // I2C bus, PCF8574 Slaveaddress, LCD Type -// SD card -SDFileSystem sd(p5, p6, p7, p8, "sd"); // mosi, miso, sclk, cs the pinout on the mbed Cool Components workshop board - -int main() -{ - char ligne[17]; - lcd.cls(); - lcd.setBacklight(TextLCD::LightOff); - wait(1); - lcd.printf(" "); - lcd.cls(); - lcd.setBacklight(TextLCD::LightOn); - lcd.setCursor(TextLCD::CurOff_BlkOff); - mkdir("/sd/mydir", 0777); - FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); - if(fp == NULL) { - error("Could not open file for write\n"); - } - fprintf(fp, "IUT---MP3"); - fclose(fp); - fp = fopen("/sd/mydir/sdtest.txt", "r"); - fscanf(fp,"%s",ligne); - lcd.printf(ligne); - fclose(fp); - - - wait(1); - // - codec.init(); // initialise le codec - codec.loadpatch(); // charge le patch (rev 1.5) - codec.setbassboost( 15, 150); // basse - codec.settrebleboost( 7, 15000); // aigue - codec.setvolume( 0x10, 0x10); // volume - - - FILE *song = fopen("/sd/music/1.mp3", "r"); // ouverture fichier MP3 - codec.resetplaytime(); - int aff=0; - - while(1) { - - while(!feof(song)) { // tant que fichier non termine - - fread(buff, 1, BUFFER_SIZE, song); // lecture buffer - aff++; - if(aff%1==0){ - codec.getplaytime(ligne); - ligne[5]=NULL; - lcd.locate(2,1); - lcd.puts(ligne);} - int iSize=0; - while( iSize < BUFFER_SIZE) { - codec.testdreq(); - codec.writedata( buff[ iSize++]); - //if ( iSize > BUFFER_SIZE) - //break; - } - } - } -} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/touchpad.cpp Sun Oct 30 23:20:20 2016 +0000 @@ -0,0 +1,326 @@ + #include "MPR121.h" + #include "mbed.h" + #include "TextLCD.h" + #include "SDFileSystem.h" + #include <VLSIcodec.h> + +#define BUFFER_SIZE 2048 +#define play 0x0001 +#define stop 0x0010 +#define pause 0x0100 +#define Vhigh 0x0002 +#define Vdown 0x0020 +#define previous 0x0004 +#define next 0x0040 + +Serial com(USBTX, USBRX); //Initiallize the Serial Port 0 (9600 bits/sec) + // codec +VS1053Codec codec(p11, p12, p13, p14, p16, p15, p17); // mosi, miso, sck, cs, dreq, rst, bsync + // SD card +SDFileSystem sd(p5, p6, p7, p8, "sd"); // mosi, miso, sclk, cs the pinout on the mbed Cool Components workshop board + // I2C Communication +/*I2C i2c_lcd(p9, p10 ); // SDA, SCL */ + I2C i2c(p28, p27); //SDA, SCL + // LCD +TextLCD_I2C lcd(&i2c, 0x40, TextLCD::LCD16x2); // I2C bus, PCF8574 Slaveaddress, LCD Type + //Touch_pad + InterruptIn irq(p26); + MPR121 touch_pad(i2c, irq, MPR121::ADDR_VSS ); + + unsigned char buff[BUFFER_SIZE]; + int check=0; + Timer timer; + + int main() +{ + touch_pad.init(); //initialisation du touch_pad + touch_pad.enable(); //activation du touch_pad + uint16_t button_val; // variable recueillant la valeur du bouton + bool lecture=0; //booléen conditionnant l'etat play + int right=0x30, left =0x30; //initialisation des valeurs de volumes de départ + int temps = 0 ; + FILE *song; + char ligne[13],time[10]; + int aff=0; + char *title_song[8]={"wind", "toreador", "Moove", "Pirate", "DBZ", "Safe", "yolanda"}; + + + lcd.cls(); + lcd.setBacklight(TextLCD::LightOff); + wait(1); + lcd.printf(" "); + lcd.cls(); + lcd.setBacklight(TextLCD::LightOn); + lcd.setCursor(TextLCD::CurOff_BlkOff); + mkdir("/sd/mydir", 0777); + FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); + if(fp == NULL) + { + error("Could not open file for write\n"); + } + fprintf(fp, "IUT---MP3"); + fclose(fp); + fp = fopen("/sd/mydir/sdtest.txt", "r"); + fscanf(fp,"%s",ligne); + lcd.printf(ligne); + fclose(fp); + + + // + codec.init(); // initialise le codec + codec.loadpatch(); // charge le patch (rev 1.5) + codec.setbassboost( 15, 150); // basse + codec.settrebleboost( 7, 15000); // aigue + codec.setvolume(right, left); // volume + + int song_number=1; + char str[16] = "/sd/music/"; + + printf("\n Ouverture fichie \n \n"); + wait(1); + + codec.resetplaytime(); + + + while(1) + { + + button_val=touch_pad.buttonPressed(); + printf("\n button = 0x%04x \n", button_val); + + typedef enum{e_primordial, e_init, e_play, e_pause, e_next, e_previous, e_stop,e_suite}type_etat; + static type_etat etat=e_primordial; + + switch(etat) + { + case e_primordial : + if(button_val==play)etat=e_init; + break; + + case e_init : + lecture=1; + sprintf(str+10,"%d",song_number); //donne le numéro de la musique + strcat(str,".mp3"); //concatene le numero avec l'extension de la musique + song = fopen(str, "r"); + etat = e_play; + break; + //Play + + case e_play : + lcd.cls(); + lcd.locate(0,0); + lcd.printf("%d %s",song_number,title_song[song_number]); + while(lecture) + { + + timer.start(); + printf("feof \n"); + fread(buff, 1, BUFFER_SIZE, song); // lecture buffer + printf("lecture buffer \n"); + lcd.locate(9,1); + lcd.printf("PLAY"); + aff++; + if(aff%1==0){ + codec.getplaytime(ligne); + ligne[5]=NULL; + lcd.locate(1,1); + lcd.puts(ligne);} + + int iSize=0; + for( iSize=0;iSize < BUFFER_SIZE;iSize++) + { + codec.testdreq(); + codec.writedata( buff[ iSize]); + } + if(feof(song)&&button_val==0x0000) + { + printf("fin du fichier \n"); + codec.resetplaytime(); + etat=e_next; + } + + button_val = touch_pad.buttonPressed(); + if(button_val==stop)//stop + { + lecture=0; + etat=e_stop; + } + + if(button_val==0x0004)//previeous + { + lecture=0; + wait(0.5); + etat=e_previous; + } + if(button_val==0x0040)//next + { + lecture=0; + wait(0.5); + etat=e_next; + } + if(button_val==0x0020)//augmenter la volume + { + if(temps%1==0) + { + codec.setvolume(right--, left--); + printf("Volume++ \n"); + lcd.locate(12,0); + lcd.printf("Vol+"); + //affiche=0; + } + } + + if(button_val==0x0002)//dimunuer la volume + { + if(temps%1==0) + { + codec.setvolume(right++, left++); + printf("Volume-- \n"); + lcd.locate(12,0); + lcd.printf("Vol-"); + } + } + + if(button_val==pause)//pause + { + lecture=!lecture; + etat = e_pause; + } + + if(button_val==0x000)//augmenter la volume + { + lcd.locate(10,0); + lcd.printf(" "); + } + + } + break; + //Stop + + case e_stop : + printf("stop \n"); + lcd.locate(9,1); + lcd.printf("Stop"); + lecture=0; + fclose(song); + codec.resetplaytime(); + song = fopen(str, "r"); + if(button_val==play)etat=e_init; + if(button_val==0x0004)//previeous + { + lecture=0; + wait(1); + etat=e_previous; + } + if(button_val==0x0040)//next + { + lecture=0; + wait(1); + etat=e_next; + } + break; + + //Pause + + case e_pause : + printf("\n button = 0x%04x \n", button_val); + printf("pause \n"); + lcd.locate(9,1); + lcd.printf("Pause"); + if(button_val==play) + { + lecture=1; + etat=e_play; + } + if(button_val==0x0004)//previeous + { + lecture=0; + wait(1); + etat=e_previous; + } + if(button_val==0x0040)//next + { + lecture=0; + wait(1); + etat=e_next; + } + if(button_val==stop) + { + lcd.locate(9,1); + lcd.printf(" "); + etat=e_stop; + } + if(button_val==0x0020)//augmenter la volume + { + if(temps%1==0) + { + codec.setvolume(right--, left--); + printf("Volume++ \n"); + lcd.locate(12,0); + lcd.printf("Vol+"); + + } + } + + if(button_val==0x0002)//dimunuer la volume + { + if(right<=0x00 && left<=0x00) + { + codec.setvolume(0x00, 0x00); + printf("volume max"); + } + else + { + if(temps%1==0) + { + codec.setvolume(right++, left++); + printf("Volume-- \n"); + lcd.locate(12,0); + lcd.printf("Vol-"); + + } + } + } + + if(button_val==0x000)//augmenter la volume + { + lcd.locate(10,0); + lcd.printf(" "); + } + break; + //Next + + case e_next : + lcd.locate(9,1); + lcd.printf("Next"); + wait(0.5); + codec.resetplaytime(); + song_number++; + if(song_number==7)song_number=0; + lecture=1; + printf("Next \n"); + etat=e_init; + break; + //Previous + + case e_previous : + lcd.locate(7,1); + lcd.printf("Previous"); + wait(0.5); + codec.resetplaytime(); + song_number--; + if(song_number<0)song_number=6; + lecture=1; + printf("Previous \n"); + etat=e_init; + break; + + default: + printf("error"); + break; + } + } + + } + + \ No newline at end of file