help :(
Dependencies: FFT
Diff: main.cpp
- Revision:
- 2:a6e81c45ef48
- Parent:
- 1:5dd6801bb0d6
- Child:
- 3:3dbf078989b1
- Child:
- 5:598d94b45bad
diff -r 5dd6801bb0d6 -r a6e81c45ef48 main.cpp --- a/main.cpp Wed Dec 02 23:39:20 2020 +0000 +++ b/main.cpp Thu Dec 03 00:33:19 2020 +0000 @@ -14,11 +14,13 @@ AnalogOut DACout(p18); // speaker wave_player waver(&DACout); Mutex speaker_lock; +DigitalOut myled(LED1); // mbed LED +Serial pc (USBTX,USBRX); -DigitalOut myled(LED1); // mbed LED +#define BUFFER_SIZE 50 // delete later -int sample[12][8] = { +/*int sample[12][8] = { 34085,32666,29810,29823,27514,24175,24468,32559, 36401,33075,29037,21933,20189,21751,20975,20087, 17530,27723,30891,21128,19982,15446,12413,13597, @@ -31,7 +33,7 @@ 57452,51210,52462,59096,56711,52268,49364,42865, 41483,37964,39215,35908,31570,28332,24492,23121, 22874,18154,15541,15263,12463,12198,13301,9951 -}; +};*/ // states for display output const int on[8][8] = @@ -84,17 +86,17 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -void display_thread(void const* args) { + + +void display_fft(int sample[]) { int state = 0; + int freq = 0; matrix.begin(0x70); - while(1) { - for (int a = 0; a < 12; a++) { - for (int b = 0; b < 8; b++) { - - // grab the FFT frequencies; - int freq = sample[a][b]; + for (int a = 0; a < 50; a++) { + + freq = sample[a]; // determine state based on the FFT output range if (freq >= 0 && freq < 10000) { @@ -177,12 +179,42 @@ default: break; - } + } } - } + +} + +//Reads SD card and passes value to frequency display +void display_thread(void const* args) +{ + FILE *fp = fopen("/sd/africa-toto-array.txt","r"); + if(fp == NULL) { + pc.printf("Error opening file\n"); + return; } + + int buffer[BUFFER_SIZE]; + int buffer_index = 0; + int value; + pc.printf("Thread start\n"); + while(fscanf(fp,"%d,",&value) == 1){ + buffer[buffer_index] = value; + buffer_index++; + pc.printf("%d\n",value); + buffer_index++; + if(buffer_index == BUFFER_SIZE) + { + //fast fourier tranform function here + display_fft(buffer); + buffer_index = 0; + memset(buffer,0,sizeof(buffer)); + + } + } + + fclose(fp); } void speaker_thread(void const* args) @@ -193,6 +225,8 @@ // grab file here and put together string // string song_title = "/sd/" + "" + ".wav"; + + /* FILE *wave_file; wave_file=fopen("/sd/africa-toto.wav","r"); @@ -201,7 +235,7 @@ speaker_lock.unlock(); fclose(wave_file); Thread::wait(100); - + */ } }