SD leseing til array

Dependencies:   SDFileSystem mbed

Fork of SDFileSystem_HelloWorld by mbed official

Revision:
3:5a08f9ecfb16
Parent:
2:57156358b223
--- a/main.cpp	Tue Apr 18 08:32:29 2017 +0000
+++ b/main.cpp	Mon Apr 24 10:23:10 2017 +0000
@@ -1,10 +1,26 @@
 #include "mbed.h"
+#include <stdio.h>
+#include <string.h>
 #include "SDFileSystem.h"
+#include "wavheader.h"
 
 SDFileSystem sd(p5, p6, p7, p20, "sd"); // the pinout on the mbed Cool Components workshop board
+SPI dac(p11,p12,p13);
+DigitalOut LR(p14);
+DigitalOut LED(LED1);
+DigitalOut LEDn(LED1);
+Ticker sampler;
+
 
 char filer[64][64];
-int numberOfFiles = 0;
+int numberOfFiles = 0; //files in filer array
+int chuncksize = 0;
+int readern = 0;
+int playern = 0;
+int16_t databuf[1024];
+int16_t sbuffer[1];
+
+struct WAV_HEADER wavHeader;
 
 
 void sdToArray(char directory[64]="/sd", char type[5] = ".wav")
@@ -31,14 +47,62 @@
     }
 }
 
+void analyzeWAV(char filnavn[64])
+{
+    char dir[128] = "/sd/";
+    strcat(dir,filnavn);
+    FILE *fil = fopen(dir, "rb");
+    if(fil!=NULL) {
+        fread(&wavHeader,sizeof(wavHeader),1,fil);
+        fclose(fil);
+        printf("riff: %s \r\n", wavHeader.RIFF);
+        printf("wave: %s \r\n", wavHeader.WAVE);
+        printf("Samples: %d \r\n", wavHeader.SamplesPerSec);
+        printf("bitprsamp: %d \r\n", wavHeader.bitsPerSample);
+        printf("channels: %d \r\n", wavHeader.NumOfChan);
+    }
+    printf("funcedn");
+    fclose(fil);
+}
+
+void play()
+{
+    if (playern<readern) {
+        LR = 0;
+        dac.write(sbuffer[1]);
+        LR = 1;
+        dac.write(sbuffer[1]);
+        LEDn != LEDn;
+    }
+}
 int main()
 {
+    numberOfFiles=0;
     sdToArray();
     printf("WAV filer:\r\n");
-    for(int i =0; i < numberOfFiles;i++) {
+    for(int i = 0; i < numberOfFiles; i++) {
         printf("%d | %s \r\n",i,filer[i]);
     }
-    return(0);
+    printf("Skriv filnummer:");
+    int nummer;
+    scanf("%d", &nummer);
+    printf("%d - %s \r\n", nummer, filer[nummer]);
+    printf("\r\n END!! \r");
+    
+    //
+    float frekvensplay = 1.0/wavHeader.SamplesPerSec;
+    printf("attacher-");
+    sampler.attach(&play,frekvensplay);
+    printf("spiller-");
 
-
+    char dir[128] = "/sd/";
+    strcat(dir,filer[nummer]);
+    FILE *fip = fopen(dir, "rb");
+    if(fip==NULL) {
+        printf("error opening wav %c - \r\n", dir);
+    }
+    fseek(fip, SEEK_SET, 0);
+    while(1) {
+        fread(sbuffer, 2,1,fip);
+    }
 }