Namaskron Chimpalee / Mbed 2 deprecated sammmm

Dependencies:   mbed SDFileSystem VS1053

Files at this revision

API Documentation at this revision

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