
SD leseing til array
Dependencies: SDFileSystem mbed
Fork of SDFileSystem_HelloWorld by
Diff: main.cpp
- 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); + } }