this hurts
Dependencies: FFT
Diff: main.cpp
- Revision:
- 3:3dbf078989b1
- Parent:
- 2:a6e81c45ef48
- Child:
- 4:7974ef1b1e07
- Child:
- 6:d311a95f1e9b
diff -r a6e81c45ef48 -r 3dbf078989b1 main.cpp --- a/main.cpp Thu Dec 03 00:33:19 2020 +0000 +++ b/main.cpp Thu Dec 03 05:07:27 2020 +0000 @@ -17,23 +17,7 @@ DigitalOut myled(LED1); // mbed LED Serial pc (USBTX,USBRX); -#define BUFFER_SIZE 50 - -// delete later -/*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, - 15776,14233,15622,16334,15485,17136,16389,17954, - 20349,18486,23377,34447,34400,34681,33107,31171, - 30007,33640,37007,38136,39187,38169,51831,52041, - 47831,48634,44189,43878,44743,46468,43170,47172, - 53518,52294,54825,51992,49619,48147,47901,48413, - 46049,49090,47590,46154,45423,41223,41782,54695, - 57452,51210,52462,59096,56711,52268,49364,42865, - 41483,37964,39215,35908,31570,28332,24492,23121, - 22874,18154,15541,15263,12463,12198,13301,9951 -};*/ +#define BUFFER_SIZE 64 // states for display output const int on[8][8] = @@ -88,18 +72,24 @@ -void display_fft(int sample[]) { +void display_fft(float sample[]) { int state = 0; - int freq = 0; + float freq = 0; matrix.begin(0x70); - for (int a = 0; a < 50; a++) { + int s = sizeof(sample); + + pc.printf("%d\n", s); + + for (int a = 0; a < 64; a++) { - freq = sample[a]; + freq = sample[a]; + + pc.printf("%d\n",freq); // determine state based on the FFT output range - if (freq >= 0 && freq < 10000) { + if (freq < 10000) { state = 5; // OFF } else if (freq >= 10000 && freq < 25000) { state = 4; // LOW @@ -108,7 +98,7 @@ } else if (freq >= 40000 && freq < 55000) { state = 2; // HIGH } else if (freq >= 55000) { - state = 1; // ON + state = 1; // HIGHEST } // switch statement based on the state @@ -183,6 +173,8 @@ } + + pc.printf("done"); } @@ -195,18 +187,19 @@ return; } - int buffer[BUFFER_SIZE]; + float 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[buffer_index] = (float)value; buffer_index++; - pc.printf("%d\n",value); - buffer_index++; + //pc.printf("%d\n",value); + //buffer_index++; if(buffer_index == BUFFER_SIZE) { //fast fourier tranform function here + vRealFFT(buffer, 64); display_fft(buffer); buffer_index = 0; memset(buffer,0,sizeof(buffer));