Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed SDFileSystem VS1053
Revision 2:138538acac01, committed 2018-12-16
- Comitter:
- maner1256
- Date:
- Sun Dec 16 13:06:34 2018 +0000
- Parent:
- 1:f7477dd40643
- Commit message:
- hii
Changed in this revision
VS1053.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r f7477dd40643 -r 138538acac01 VS1053.lib --- a/VS1053.lib Sat Dec 03 22:30:43 2016 +0000 +++ b/VS1053.lib Sun Dec 16 13:06:34 2018 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/silis/code/VS1053/#97a8edd44fe9 +https://os.mbed.com/users/maner1256/code/VS1053/#e3a807ca428a
diff -r f7477dd40643 -r 138538acac01 main.cpp --- a/main.cpp Sat Dec 03 22:30:43 2016 +0000 +++ b/main.cpp Sun Dec 16 13:06:34 2018 +0000 @@ -1,52 +1,370 @@ #include "mbed.h" -#include <VS1053.h> -#include"SDFileSystem.h" +#include "string" +#include "player.h" +#include "SDFileSystem.h" +//Player mp3 +SDFileSystem sd(D11, D12, D13, D9, "sd"); // the pinout on the mbed Cool +vs10xx vs1053(D11, D12, D13, D6, D7, D2, D8);//mosi,miso,sclk,xcs,xdcs,dreq,xreset +playerStatetype playerState; +static unsigned char fileBuf[32768]; +unsigned char *bufptr; +char green; +char list[20][50]; //song list +extern playerStatetype playerState; +// +DigitalOut pinout(PC_4); +//Serial +Serial pc(USBTX, USBRX); +Serial sensor_node(PA_15, PB_7); +Serial nextion(PC_6,PA_12); +int input; +int data_buffer[20]; -VS1053 player(D11, D12, D13, D6, D7, D2, D8);//mosi,miso,sclk,xcs,xdcs,dreq,xreset +//DATA +struct DATA +{ + int height; + int weight; + int sys; + int dia; + int hr; + int bp_status; // BP error + int pattern; // led ring pettern 97, 98, 99, ... + int data_status; //0 = not ready to push to cloud + +}; +struct DATA measured_data; -SDFileSystem sd(D11, D12, D13, D9, "sd"); // the pinout on the mbed Cool +void depacket(struct DATA &input); +void print_data(struct DATA &input); -static unsigned char fileBuf[1024]; -unsigned char *bufptr; - - +void write_rgb(int pattern){sensor_node.printf("%c",pattern);} +// mp3 function +void begin(void) +{ + DirHandle *dir; + struct dirent *ptr; + FileHandle *fp; + + vs1053.reset(); + dir = opendir("/sd"); + printf("\r\n**********playing list**********\r\n"); + unsigned char i = 0,j=0; + while(((ptr = dir->readdir()) != NULL)&&(i <20)) + { + if(strstr(ptr->d_name,".mp3")||strstr(ptr->d_name,".MP3")) + { + fp =sd.open(ptr->d_name, O_RDONLY); + if(fp != NULL) + { + char *byte = ptr->d_name; + j=0; + while(*byte){ + list[i][j++] = *byte++; + green=i; + } + pc.printf("%2d . %s\r\n", i,list[i++]); + //fp->close(); + } + } + } + dir->closedir(); +} +void stop(void){ + playerState =PS_STOP; + } + void playFile(char *file) { int bytes; // How many bytes in buffer left + char n; - printf("Current file is %s\n",file); - + playerState = PS_PLAY; + + vs1053.setFreq(24000000); //hight speed + FileHandle *fp =sd.open(file, O_RDONLY); if(fp == NULL) { printf("Could not open %s\r\n",file); + } else { printf("Playing %s ...\r\n",file); /* Main playback loop */ - while((bytes = fp->read(fileBuf,1)) > 0) + while((bytes = fp->read(fileBuf,32768)) > 0) { + while((bytes = fp->read(fileBuf,32000)) > 0) { { bufptr = fileBuf; - player.sendDataBlock(bufptr, bytes); + // actual audio data gets sent to VS10xx. + while(bytes > 0) + { + n = (bytes < 32)?bytes:32; + vs1053.writeData(bufptr,n); + bytes -= n; + bufptr += n; + + } + uint8_t vol = 0x00;//set vlume + vs1053.setVolume(vol); //set vlume + + if(playerState != PS_PLAY) //stop + { + fp->close(); + vs1053.softReset(); + } + + } + } } } + +} +//// end mp3 + +/// nextion function +void end(void) +{ + nextion.putc(0xff); + nextion.putc(0xff); + nextion.putc(0xff); + + } +bool printed_0 = 0; +bool printed_1 = 0; +bool printed_2 = 0; +bool printed_3 = 0; +bool printed_4 = 0; +bool printed_5 = 0; +bool printed_6 = 0; +bool printed_7 = 0; + + +void write_page_0(void){//Sam + printed_1 = 0; + printed_2 = 0; + printed_3 = 0; + printed_4 = 0; + printed_5 = 0; + printed_6 = 0; + printed_7 = 0; + if (!printed_0){ + + nextion.printf("page page0"); + playFile("track0.mp3"); + stop(); + printed_0 = 1; + end(); + } +} +void write_page_1(void){//please stand + printed_0 = 0; + printed_2 = 0; + printed_3 = 0; + printed_4 = 0; + printed_5 = 0; + printed_6 = 0; + printed_7 = 0; + if (!printed_1){ + + nextion.printf("page page1"); + playFile("track1.mp3"); + stop(); + printed_1 = 1; + end(); + } +} + +void write_page_2(int height,int weight){//show height + printed_0 = 0; + printed_1 = 0; + printed_3 = 0; + printed_4 = 0; + printed_6 = 0; + printed_7 = 0; + printed_5 = 0; + if (!printed_2){ + nextion.printf("page page2"); + printed_2 = 1; + end(); + } + nextion.printf("height.val=%d",height); + end(); + nextion.printf("weight.val=%d",weight); + end(); +} + +void write_page_3(void){//put right arm + printed_1 = 0; + printed_2 = 0; + printed_0 = 0; + printed_4 = 0; + printed_5 = 0; + printed_6 = 0; + printed_7 = 0; + if (!printed_3){ + nextion.printf("page page3"); + playFile("track3.mp3"); + stop(); + printed_3 = 1; + end(); + } +} + +void write_page_4(void){//while blood + printed_1 = 0; + printed_2 = 0; + printed_3 = 0; + printed_0 = 0; + printed_5 = 0; + printed_6 = 0; + printed_7 = 0; + if (!printed_4){ + nextion.printf("page page4"); + playFile("track4.mp3"); + stop(); + printed_4 = 1; + end(); + } } -Serial com(USBTX, USBRX); //Initiallize the Serial Port 0 (9600 bits/sec) +void write_page_5(int sys,int dia,int pulse){//show blood + printed_1 = 0; + printed_2 = 0; + printed_3 = 0; + printed_4 = 0; + printed_0 = 0; + printed_6 = 0; + printed_7 = 0; + if (!printed_5){ + nextion.printf("page page5"); + printed_5 = 1; + end(); + } + nextion.printf("sys.val=%d",sys); + end(); + nextion.printf("dia.val=%d",dia); + end(); + nextion.printf("pulse.val=%d",pulse); + end(); +} + +void write_page_6(void){//blood failed + printed_1 = 0; + printed_2 = 0; + printed_3 = 0; + printed_4 = 0; + printed_5 = 0; + printed_0 = 0; + printed_7 = 0; + if (!printed_6){ + + nextion.printf("page page6"); + playFile("track6.mp3"); + stop(); + printed_6 = 1; + end(); + } +} + +void write_page_7(void){//see you + printed_1 = 0; + printed_2 = 0; + printed_3 = 0; + printed_4 = 0; + printed_5 = 0; + printed_6 = 0; + printed_0 = 0; + if (!printed_7){ + + nextion.printf("page page7"); + playFile("track7.mp3"); + stop(); + printed_7 = 1; + end(); + } +} +//// end nextion + int main() { - com.printf("VS1053 Hello World\n"); - player.hardwareReset(); //Make a reset to the VS1053 board - player.modeSwitch(); //Patch the VS1054 board to play MP3 files (very important!). - while(1) { //Do that loop forever - playFile("track001.mp3");wait(1); - playFile("track002.mp3");wait(1); - playFile("track003.mp3");wait(1); - playFile("track004.mp3");wait(1); - playFile("track005.mp3");wait(1); - playFile("track006.mp3");wait(1); - playFile("track007.mp3");wait(1); - playFile("track008.mp3");wait(1); + + bool debug = 1; + begin(); + while(1){ + write_page_3(); + + depacket(measured_data); + if (debug) + print_data(measured_data); + write_rgb(measured_data.pattern); + + if (measured_data.data_status == 0){ + write_page_0(); + } + else if (measured_data.data_status == 1){ + write_page_1(); + } + else if (measured_data.data_status == 2){ + write_page_2(measured_data.height, measured_data.weight); + } + else if (measured_data.data_status == 3){ + write_page_3(); + input=nextion.getc(); + if(input==148){ + pinout=1; + wait(0.5); + pinout=0; + //pc.printf("a\n"); + } + } + else if (measured_data.data_status == 4){ + write_page_4(); + } + else if (measured_data.data_status == 5){ + write_page_5(measured_data.sys, measured_data.dia, measured_data.hr); + } + else if (measured_data.data_status == 6){ + write_page_6(); + } + } +} + +void depacket(struct DATA &input){ + if (sensor_node.readable()){ + + int temp =sensor_node.getc(); + //if (temp == 255){ + int cnt = 0; + while(1){ + data_buffer[cnt]=sensor_node.getc(); + if (cnt == 8)break; + if (data_buffer[cnt] == 255)cnt = 0; + else if (data_buffer[cnt] != 255)cnt++; + } + measured_data.height = data_buffer[0]; + measured_data.weight = data_buffer[1]; + input.sys = data_buffer[2]; + input.dia = data_buffer[3]; + input.hr = data_buffer[4]; + input.bp_status = data_buffer[5]; + input.pattern = data_buffer[6]; + input.data_status = data_buffer[7]; + + + } +} + +void print_data(struct DATA &input){ + pc.printf("H : %d ", input.height); + pc.printf("W : %d ", input.weight); + pc.printf("SYS : %d ", input.sys); + pc.printf("DIA : %d ", input.dia); + pc.printf("PUL : %d ", input.hr); + pc.printf("BPs : %d ", input.bp_status); + pc.printf("PAT : %d ", input.pattern); + pc.printf("STATE : %d", input.data_status); + pc.printf("\n"); } \ No newline at end of file