analyse audio input

Dependencies:   PololuLedStrip mbed

Committer:
KongXiangyue
Date:
Thu Aug 07 14:24:47 2014 +0000
Revision:
0:bd2ecb743ed5
AUDIO fft led

Who changed what in which revision?

UserRevisionLine numberNew contents of line
KongXiangyue 0:bd2ecb743ed5 1 #include "mbed.h"
KongXiangyue 0:bd2ecb743ed5 2 #include "PololuLedStrip.h"
KongXiangyue 0:bd2ecb743ed5 3
KongXiangyue 0:bd2ecb743ed5 4 extern "C" void fftR4(short *y, short *x, int N);
KongXiangyue 0:bd2ecb743ed5 5
KongXiangyue 0:bd2ecb743ed5 6 //***************Global Varity***************************
KongXiangyue 0:bd2ecb743ed5 7 #define BUF_LEN 1024
KongXiangyue 0:bd2ecb743ed5 8 #define SAMP_FREQ 48000
KongXiangyue 0:bd2ecb743ed5 9 #define LED_COUNT 60
KongXiangyue 0:bd2ecb743ed5 10 short samples[BUF_LEN];// store values from ADC
KongXiangyue 0:bd2ecb743ed5 11 short mx[BUF_LEN*2];// input data i6bit 4 byte aligned x0r,xoi,x1r,x1i,....
KongXiangyue 0:bd2ecb743ed5 12 short my[BUF_LEN*2];// output data 16bit 4byte aligned y0r,y0i, y1r,y1i,....
KongXiangyue 0:bd2ecb743ed5 13 float spectrum[BUF_LEN/2]; // frequency spectrum
KongXiangyue 0:bd2ecb743ed5 14 float max1 = 0.0;
KongXiangyue 0:bd2ecb743ed5 15 float max2 = 0.0;
KongXiangyue 0:bd2ecb743ed5 16 float max3 = 0.0;
KongXiangyue 0:bd2ecb743ed5 17 float max4 = 0.0;
KongXiangyue 0:bd2ecb743ed5 18 float max5 = 0.0;
KongXiangyue 0:bd2ecb743ed5 19 int j1 = 0;
KongXiangyue 0:bd2ecb743ed5 20 int j2 = 0;
KongXiangyue 0:bd2ecb743ed5 21 int j3 = 0;
KongXiangyue 0:bd2ecb743ed5 22 int j4 = 0;
KongXiangyue 0:bd2ecb743ed5 23 int j5 = 0;
KongXiangyue 0:bd2ecb743ed5 24 int j11=0;
KongXiangyue 0:bd2ecb743ed5 25 int j22=0;
KongXiangyue 0:bd2ecb743ed5 26 int j33=0;
KongXiangyue 0:bd2ecb743ed5 27 int j44=0;
KongXiangyue 0:bd2ecb743ed5 28 int j55=0;
KongXiangyue 0:bd2ecb743ed5 29 rgb_color colors[LED_COUNT];
KongXiangyue 0:bd2ecb743ed5 30 //--------------End of Global Varity---------------------
KongXiangyue 0:bd2ecb743ed5 31
KongXiangyue 0:bd2ecb743ed5 32
KongXiangyue 0:bd2ecb743ed5 33
KongXiangyue 0:bd2ecb743ed5 34 //************** Port Configuration *********************
KongXiangyue 0:bd2ecb743ed5 35 AnalogIn audio(p20); // ADC pin must be biased at Vcc/2 using coupling capacitor and potential divider
KongXiangyue 0:bd2ecb743ed5 36 BusOut leds (LED1,LED2,LED3,LED4);
KongXiangyue 0:bd2ecb743ed5 37 PololuLedStrip ledStrip(p8);
KongXiangyue 0:bd2ecb743ed5 38
KongXiangyue 0:bd2ecb743ed5 39
KongXiangyue 0:bd2ecb743ed5 40 //*** Debug***
KongXiangyue 0:bd2ecb743ed5 41 Serial serial(USBTX,USBRX); //Real time debug USB port
KongXiangyue 0:bd2ecb743ed5 42 LocalFileSystem local("local"); // Create the local filesystem under the name "local"
KongXiangyue 0:bd2ecb743ed5 43
KongXiangyue 0:bd2ecb743ed5 44 //----------------- End of Port Configuration------------
KongXiangyue 0:bd2ecb743ed5 45
KongXiangyue 0:bd2ecb743ed5 46
KongXiangyue 0:bd2ecb743ed5 47 // **************SubFunctions Define *******************
KongXiangyue 0:bd2ecb743ed5 48 void initLED();
KongXiangyue 0:bd2ecb743ed5 49 void updateSamples();
KongXiangyue 0:bd2ecb743ed5 50 float magnitude (short y1, short y2);
KongXiangyue 0:bd2ecb743ed5 51 void doFFT();
KongXiangyue 0:bd2ecb743ed5 52 void ledBarGraph();
KongXiangyue 0:bd2ecb743ed5 53 void calcPeakFrequency ();
KongXiangyue 0:bd2ecb743ed5 54 void runLED();
KongXiangyue 0:bd2ecb743ed5 55
KongXiangyue 0:bd2ecb743ed5 56 //--------------- END of Sub Define---------------------
KongXiangyue 0:bd2ecb743ed5 57
KongXiangyue 0:bd2ecb743ed5 58
KongXiangyue 0:bd2ecb743ed5 59 int main()
KongXiangyue 0:bd2ecb743ed5 60 {
KongXiangyue 0:bd2ecb743ed5 61 leds = 15;
KongXiangyue 0:bd2ecb743ed5 62 wait (1.0);
KongXiangyue 0:bd2ecb743ed5 63 leds =0;
KongXiangyue 0:bd2ecb743ed5 64 initLED();
KongXiangyue 0:bd2ecb743ed5 65
KongXiangyue 0:bd2ecb743ed5 66 while(1) {
KongXiangyue 0:bd2ecb743ed5 67 ledBarGraph();
KongXiangyue 0:bd2ecb743ed5 68 updateSamples();
KongXiangyue 0:bd2ecb743ed5 69 doFFT();
KongXiangyue 0:bd2ecb743ed5 70 calcPeakFrequency ();
KongXiangyue 0:bd2ecb743ed5 71 runLED();
KongXiangyue 0:bd2ecb743ed5 72
KongXiangyue 0:bd2ecb743ed5 73 }// End while
KongXiangyue 0:bd2ecb743ed5 74
KongXiangyue 0:bd2ecb743ed5 75
KongXiangyue 0:bd2ecb743ed5 76
KongXiangyue 0:bd2ecb743ed5 77 }// End main
KongXiangyue 0:bd2ecb743ed5 78
KongXiangyue 0:bd2ecb743ed5 79 //********************SubFunction Implementation****************
KongXiangyue 0:bd2ecb743ed5 80
KongXiangyue 0:bd2ecb743ed5 81 void initLED(){
KongXiangyue 0:bd2ecb743ed5 82 for (int i = 0; i < 60; i++){
KongXiangyue 0:bd2ecb743ed5 83 colors[i] = (rgb_color){ 2,200,2 };
KongXiangyue 0:bd2ecb743ed5 84 }
KongXiangyue 0:bd2ecb743ed5 85
KongXiangyue 0:bd2ecb743ed5 86 ledStrip.write(colors, LED_COUNT);
KongXiangyue 0:bd2ecb743ed5 87
KongXiangyue 0:bd2ecb743ed5 88 wait(1);
KongXiangyue 0:bd2ecb743ed5 89 for (int i = 0; i < 60; i++){
KongXiangyue 0:bd2ecb743ed5 90 colors[i] = (rgb_color){ 0,0,0 };
KongXiangyue 0:bd2ecb743ed5 91 }
KongXiangyue 0:bd2ecb743ed5 92
KongXiangyue 0:bd2ecb743ed5 93 ledStrip.write(colors, LED_COUNT);
KongXiangyue 0:bd2ecb743ed5 94
KongXiangyue 0:bd2ecb743ed5 95 }
KongXiangyue 0:bd2ecb743ed5 96
KongXiangyue 0:bd2ecb743ed5 97
KongXiangyue 0:bd2ecb743ed5 98
KongXiangyue 0:bd2ecb743ed5 99
KongXiangyue 0:bd2ecb743ed5 100
KongXiangyue 0:bd2ecb743ed5 101
KongXiangyue 0:bd2ecb743ed5 102
KongXiangyue 0:bd2ecb743ed5 103 //--------------------------------------
KongXiangyue 0:bd2ecb743ed5 104 void updateSamples (){
KongXiangyue 0:bd2ecb743ed5 105
KongXiangyue 0:bd2ecb743ed5 106 for (int i=0; i< BUF_LEN; i++){
KongXiangyue 0:bd2ecb743ed5 107 samples[i]= (short) (audio.read_u16() - 0x8000);
KongXiangyue 0:bd2ecb743ed5 108 wait_us(1e6/SAMP_FREQ);
KongXiangyue 0:bd2ecb743ed5 109
KongXiangyue 0:bd2ecb743ed5 110 }//End for
KongXiangyue 0:bd2ecb743ed5 111
KongXiangyue 0:bd2ecb743ed5 112 }// End updateSamples
KongXiangyue 0:bd2ecb743ed5 113
KongXiangyue 0:bd2ecb743ed5 114 void doFFT(){
KongXiangyue 0:bd2ecb743ed5 115 //clear buffers
KongXiangyue 0:bd2ecb743ed5 116 for (int i=0; i<BUF_LEN*2; i++){
KongXiangyue 0:bd2ecb743ed5 117 mx[i]=0;
KongXiangyue 0:bd2ecb743ed5 118 my[i]=0;
KongXiangyue 0:bd2ecb743ed5 119 }// end for
KongXiangyue 0:bd2ecb743ed5 120
KongXiangyue 0:bd2ecb743ed5 121 for (int i =0; i<BUF_LEN;i++){
KongXiangyue 0:bd2ecb743ed5 122 mx[i*2]=samples[i];
KongXiangyue 0:bd2ecb743ed5 123 }// end for
KongXiangyue 0:bd2ecb743ed5 124
KongXiangyue 0:bd2ecb743ed5 125 fftR4(my,mx,BUF_LEN); // call FFT routine
KongXiangyue 0:bd2ecb743ed5 126
KongXiangyue 0:bd2ecb743ed5 127 int j=0;// counter number of next for loop
KongXiangyue 0:bd2ecb743ed5 128
KongXiangyue 0:bd2ecb743ed5 129 for (int i= 0;i< BUF_LEN; i+=2 ){
KongXiangyue 0:bd2ecb743ed5 130 spectrum[j]= magnitude (my[i],my[i+i]); // get magnitude of FFT output to get spectrum data
KongXiangyue 0:bd2ecb743ed5 131 j++;
KongXiangyue 0:bd2ecb743ed5 132 }
KongXiangyue 0:bd2ecb743ed5 133
KongXiangyue 0:bd2ecb743ed5 134 }// End doFFT
KongXiangyue 0:bd2ecb743ed5 135
KongXiangyue 0:bd2ecb743ed5 136 //---------------------------
KongXiangyue 0:bd2ecb743ed5 137 float magnitude (short y1, short y2){
KongXiangyue 0:bd2ecb743ed5 138
KongXiangyue 0:bd2ecb743ed5 139 return sqrt(float (y1*y1+y2*y2));
KongXiangyue 0:bd2ecb743ed5 140 }
KongXiangyue 0:bd2ecb743ed5 141
KongXiangyue 0:bd2ecb743ed5 142 //------------------------------------------
KongXiangyue 0:bd2ecb743ed5 143 void calcPeakFrequency (){
KongXiangyue 0:bd2ecb743ed5 144 float max = 0.0;
KongXiangyue 0:bd2ecb743ed5 145
KongXiangyue 0:bd2ecb743ed5 146 int frequency = 0;
KongXiangyue 0:bd2ecb743ed5 147 int j = 0;
KongXiangyue 0:bd2ecb743ed5 148 max1 = 0.0;
KongXiangyue 0:bd2ecb743ed5 149 max2 = 0.0;
KongXiangyue 0:bd2ecb743ed5 150 max3 = 0.0;
KongXiangyue 0:bd2ecb743ed5 151 max4 = 0.0;
KongXiangyue 0:bd2ecb743ed5 152 max5 = 0.0;
KongXiangyue 0:bd2ecb743ed5 153 j1 = 0;
KongXiangyue 0:bd2ecb743ed5 154 j2 = 0;
KongXiangyue 0:bd2ecb743ed5 155 j3 = 0;
KongXiangyue 0:bd2ecb743ed5 156 j4 = 0;
KongXiangyue 0:bd2ecb743ed5 157 j5 = 0;
KongXiangyue 0:bd2ecb743ed5 158
KongXiangyue 0:bd2ecb743ed5 159
KongXiangyue 0:bd2ecb743ed5 160 for (int i=0; i<BUF_LEN; i+=2) { // loop through spectrum and look for maximum value
KongXiangyue 0:bd2ecb743ed5 161 if (spectrum[j] > max) {
KongXiangyue 0:bd2ecb743ed5 162 max = spectrum[j];
KongXiangyue 0:bd2ecb743ed5 163 frequency = int(SAMP_FREQ/BUF_LEN/2*i);
KongXiangyue 0:bd2ecb743ed5 164 }
KongXiangyue 0:bd2ecb743ed5 165 j++;
KongXiangyue 0:bd2ecb743ed5 166 }
KongXiangyue 0:bd2ecb743ed5 167
KongXiangyue 0:bd2ecb743ed5 168 for (int i=0; i<101; i+=2) {
KongXiangyue 0:bd2ecb743ed5 169 if (spectrum[j1] > max1) {
KongXiangyue 0:bd2ecb743ed5 170 max1 = spectrum[j1];
KongXiangyue 0:bd2ecb743ed5 171 j11=j1;
KongXiangyue 0:bd2ecb743ed5 172 }
KongXiangyue 0:bd2ecb743ed5 173 j1++;
KongXiangyue 0:bd2ecb743ed5 174 }
KongXiangyue 0:bd2ecb743ed5 175
KongXiangyue 0:bd2ecb743ed5 176 for (int i=102; i<204; i+=2) {
KongXiangyue 0:bd2ecb743ed5 177 if (spectrum[j2] > max2) {
KongXiangyue 0:bd2ecb743ed5 178 max2 = spectrum[j2];
KongXiangyue 0:bd2ecb743ed5 179 j22=j2;
KongXiangyue 0:bd2ecb743ed5 180 }
KongXiangyue 0:bd2ecb743ed5 181 j2++;
KongXiangyue 0:bd2ecb743ed5 182 }
KongXiangyue 0:bd2ecb743ed5 183
KongXiangyue 0:bd2ecb743ed5 184 for (int i=205; i<306; i+=2) {
KongXiangyue 0:bd2ecb743ed5 185 if (spectrum[j3] > max3) {
KongXiangyue 0:bd2ecb743ed5 186 max3 = spectrum[j3];
KongXiangyue 0:bd2ecb743ed5 187 j33=j3;
KongXiangyue 0:bd2ecb743ed5 188 }
KongXiangyue 0:bd2ecb743ed5 189 j3++;
KongXiangyue 0:bd2ecb743ed5 190 }
KongXiangyue 0:bd2ecb743ed5 191
KongXiangyue 0:bd2ecb743ed5 192 for (int i=307; i<408; i+=2) {
KongXiangyue 0:bd2ecb743ed5 193 if (spectrum[j4] > max4) {
KongXiangyue 0:bd2ecb743ed5 194 max4 = spectrum[j4];
KongXiangyue 0:bd2ecb743ed5 195 j44=j4;
KongXiangyue 0:bd2ecb743ed5 196 }
KongXiangyue 0:bd2ecb743ed5 197 j4++;
KongXiangyue 0:bd2ecb743ed5 198 }
KongXiangyue 0:bd2ecb743ed5 199
KongXiangyue 0:bd2ecb743ed5 200 for (int i=408; i<511; i+=2) {
KongXiangyue 0:bd2ecb743ed5 201 if (spectrum[j5] > max5) {
KongXiangyue 0:bd2ecb743ed5 202 max5 = spectrum[j5];
KongXiangyue 0:bd2ecb743ed5 203 j55=j5;
KongXiangyue 0:bd2ecb743ed5 204 }
KongXiangyue 0:bd2ecb743ed5 205 j5++;
KongXiangyue 0:bd2ecb743ed5 206 }
KongXiangyue 0:bd2ecb743ed5 207 serial.printf("frq=%d\n",frequency);
KongXiangyue 0:bd2ecb743ed5 208 //serial.printf("j11-j55 = %d,%d,%d,%d,%d\n",j11,j22,j33,j44,j55);
KongXiangyue 0:bd2ecb743ed5 209
KongXiangyue 0:bd2ecb743ed5 210 }//End calcPeakFrequency
KongXiangyue 0:bd2ecb743ed5 211 //-------------------------------------------------
KongXiangyue 0:bd2ecb743ed5 212 void ledBarGraph()
KongXiangyue 0:bd2ecb743ed5 213 {
KongXiangyue 0:bd2ecb743ed5 214 float rms = 0.0; // initialse array
KongXiangyue 0:bd2ecb743ed5 215 for (int i = 0; i < BUF_LEN; i++) {
KongXiangyue 0:bd2ecb743ed5 216 rms+= samples[i]*samples[i];
KongXiangyue 0:bd2ecb743ed5 217 }
KongXiangyue 0:bd2ecb743ed5 218 // calc the sum of the squares
KongXiangyue 0:bd2ecb743ed5 219
KongXiangyue 0:bd2ecb743ed5 220 rms/=BUF_LEN; // get the mean
KongXiangyue 0:bd2ecb743ed5 221 rms = sqrt(rms); // and root to get the RMS
KongXiangyue 0:bd2ecb743ed5 222 rms/= 16384.0; // scale according to 16-bit signed maximum value
KongXiangyue 0:bd2ecb743ed5 223
KongXiangyue 0:bd2ecb743ed5 224 // check value and update LEDs to show amplitude
KongXiangyue 0:bd2ecb743ed5 225 if (rms > 0.8) {
KongXiangyue 0:bd2ecb743ed5 226 leds = 15;
KongXiangyue 0:bd2ecb743ed5 227 } else if (rms > 0.6) {
KongXiangyue 0:bd2ecb743ed5 228 leds = 7;
KongXiangyue 0:bd2ecb743ed5 229 } else if (rms > 0.4) {
KongXiangyue 0:bd2ecb743ed5 230 leds = 3;
KongXiangyue 0:bd2ecb743ed5 231 } else if (rms > 0.2) {
KongXiangyue 0:bd2ecb743ed5 232 leds = 1;
KongXiangyue 0:bd2ecb743ed5 233 } else {
KongXiangyue 0:bd2ecb743ed5 234 leds = 0;
KongXiangyue 0:bd2ecb743ed5 235 }
KongXiangyue 0:bd2ecb743ed5 236
KongXiangyue 0:bd2ecb743ed5 237 //serial.printf("RMS = %f\n",rms);
KongXiangyue 0:bd2ecb743ed5 238 }//End void ledBarGraph
KongXiangyue 0:bd2ecb743ed5 239
KongXiangyue 0:bd2ecb743ed5 240 //-------------------------------------------
KongXiangyue 0:bd2ecb743ed5 241
KongXiangyue 0:bd2ecb743ed5 242
KongXiangyue 0:bd2ecb743ed5 243
KongXiangyue 0:bd2ecb743ed5 244 void runLED(){
KongXiangyue 0:bd2ecb743ed5 245 // clear the ledStrip
KongXiangyue 0:bd2ecb743ed5 246 for (int i = 0; i < LED_COUNT; i++){
KongXiangyue 0:bd2ecb743ed5 247 colors[i] = (rgb_color){ 0, 0, 0 };
KongXiangyue 0:bd2ecb743ed5 248 }
KongXiangyue 0:bd2ecb743ed5 249
KongXiangyue 0:bd2ecb743ed5 250 //if ((maxFreq)>60) maxFreq=60; // Limiting Length
KongXiangyue 0:bd2ecb743ed5 251
KongXiangyue 0:bd2ecb743ed5 252 // max1
KongXiangyue 0:bd2ecb743ed5 253 for (int i = 0; i < (j11/10); i++){
KongXiangyue 0:bd2ecb743ed5 254 colors[i] = (rgb_color){ 200,2,2 };
KongXiangyue 0:bd2ecb743ed5 255 }
KongXiangyue 0:bd2ecb743ed5 256
KongXiangyue 0:bd2ecb743ed5 257 //max2
KongXiangyue 0:bd2ecb743ed5 258 for (int i = 21; i > (j22/10); i--){
KongXiangyue 0:bd2ecb743ed5 259 colors[i] = (rgb_color){ 2,200,2 };
KongXiangyue 0:bd2ecb743ed5 260 }
KongXiangyue 0:bd2ecb743ed5 261
KongXiangyue 0:bd2ecb743ed5 262 //max3
KongXiangyue 0:bd2ecb743ed5 263 for (int i = 24; i < (j33/10); i++){
KongXiangyue 0:bd2ecb743ed5 264 colors[i] = (rgb_color){ 2,200,200 };
KongXiangyue 0:bd2ecb743ed5 265 }
KongXiangyue 0:bd2ecb743ed5 266 //max4
KongXiangyue 0:bd2ecb743ed5 267 for (int i = 45; i > (j44/10); i--){
KongXiangyue 0:bd2ecb743ed5 268 colors[i] = (rgb_color){ 100,2,200 };
KongXiangyue 0:bd2ecb743ed5 269 }
KongXiangyue 0:bd2ecb743ed5 270 //max5
KongXiangyue 0:bd2ecb743ed5 271 for (int i = 48; i < (j55/10); i++){
KongXiangyue 0:bd2ecb743ed5 272 colors[i] = (rgb_color){ 200,2,200 };
KongXiangyue 0:bd2ecb743ed5 273 }
KongXiangyue 0:bd2ecb743ed5 274
KongXiangyue 0:bd2ecb743ed5 275 ledStrip.write(colors, LED_COUNT);
KongXiangyue 0:bd2ecb743ed5 276 }
KongXiangyue 0:bd2ecb743ed5 277
KongXiangyue 0:bd2ecb743ed5 278
KongXiangyue 0:bd2ecb743ed5 279
KongXiangyue 0:bd2ecb743ed5 280
KongXiangyue 0:bd2ecb743ed5 281
KongXiangyue 0:bd2ecb743ed5 282
KongXiangyue 0:bd2ecb743ed5 283 /*void runLED(){
KongXiangyue 0:bd2ecb743ed5 284 // clear the ledStrip
KongXiangyue 0:bd2ecb743ed5 285 for (int i = 0; i < LED_COUNT; i++){
KongXiangyue 0:bd2ecb743ed5 286 colors[i] = (rgb_color){ 0, 0, 0 };
KongXiangyue 0:bd2ecb743ed5 287 }
KongXiangyue 0:bd2ecb743ed5 288
KongXiangyue 0:bd2ecb743ed5 289 //if ((maxFreq)>60) maxFreq=60; // Limiting Length
KongXiangyue 0:bd2ecb743ed5 290
KongXiangyue 0:bd2ecb743ed5 291 // max1
KongXiangyue 0:bd2ecb743ed5 292 for (int i = 0; i < 9; i++){
KongXiangyue 0:bd2ecb743ed5 293 colors[i] = (rgb_color){ 200,2,2 };
KongXiangyue 0:bd2ecb743ed5 294 }
KongXiangyue 0:bd2ecb743ed5 295
KongXiangyue 0:bd2ecb743ed5 296 //max2
KongXiangyue 0:bd2ecb743ed5 297 for (int i = 21; i > 12; i--){
KongXiangyue 0:bd2ecb743ed5 298 colors[i] = (rgb_color){ 2,200,2 };
KongXiangyue 0:bd2ecb743ed5 299 }
KongXiangyue 0:bd2ecb743ed5 300
KongXiangyue 0:bd2ecb743ed5 301 //max3
KongXiangyue 0:bd2ecb743ed5 302 for (int i = 24; i < 33; i++){
KongXiangyue 0:bd2ecb743ed5 303 colors[i] = (rgb_color){ 2,200,200 };
KongXiangyue 0:bd2ecb743ed5 304 }
KongXiangyue 0:bd2ecb743ed5 305 //max4
KongXiangyue 0:bd2ecb743ed5 306 for (int i = 45; i > 36; i--){
KongXiangyue 0:bd2ecb743ed5 307 colors[i] = (rgb_color){ 100,2,200 };
KongXiangyue 0:bd2ecb743ed5 308 }
KongXiangyue 0:bd2ecb743ed5 309 //max5
KongXiangyue 0:bd2ecb743ed5 310 for (int i = 48; i < 57; i++){
KongXiangyue 0:bd2ecb743ed5 311 colors[i] = (rgb_color){ 200,2,200 };
KongXiangyue 0:bd2ecb743ed5 312 }
KongXiangyue 0:bd2ecb743ed5 313
KongXiangyue 0:bd2ecb743ed5 314 ledStrip.write(colors, LED_COUNT);
KongXiangyue 0:bd2ecb743ed5 315 }*/
KongXiangyue 0:bd2ecb743ed5 316
KongXiangyue 0:bd2ecb743ed5 317 /*void runLED(){
KongXiangyue 0:bd2ecb743ed5 318 // clear the ledStrip
KongXiangyue 0:bd2ecb743ed5 319 for (int i = 0; i < LED_COUNT; i++){
KongXiangyue 0:bd2ecb743ed5 320 colors[i] = (rgb_color){ 0, 0, 0 };
KongXiangyue 0:bd2ecb743ed5 321 }
KongXiangyue 0:bd2ecb743ed5 322
KongXiangyue 0:bd2ecb743ed5 323 //if ((maxFreq)>60) maxFreq=60; // Limiting Length
KongXiangyue 0:bd2ecb743ed5 324
KongXiangyue 0:bd2ecb743ed5 325 // max1
KongXiangyue 0:bd2ecb743ed5 326 for (int i = 0; i < (j11/10); i++){
KongXiangyue 0:bd2ecb743ed5 327 colors[i] = (rgb_color){ 200,2,2 };
KongXiangyue 0:bd2ecb743ed5 328 }
KongXiangyue 0:bd2ecb743ed5 329
KongXiangyue 0:bd2ecb743ed5 330 //max2
KongXiangyue 0:bd2ecb743ed5 331 for (int i = 21; i < (21-((j22-101)/10)); i--){
KongXiangyue 0:bd2ecb743ed5 332 colors[i] = (rgb_color){ 2,200,2 };
KongXiangyue 0:bd2ecb743ed5 333 }
KongXiangyue 0:bd2ecb743ed5 334
KongXiangyue 0:bd2ecb743ed5 335 //max3
KongXiangyue 0:bd2ecb743ed5 336 for (int i = 24; i < (24+((j33-204)/10)); i++){
KongXiangyue 0:bd2ecb743ed5 337 colors[i] = (rgb_color){ 2,200,200 };
KongXiangyue 0:bd2ecb743ed5 338 }
KongXiangyue 0:bd2ecb743ed5 339 //max4
KongXiangyue 0:bd2ecb743ed5 340 for (int i = 45; i < (45-((j44-306)/10)); i--){
KongXiangyue 0:bd2ecb743ed5 341 colors[i] = (rgb_color){ 100,2,200 };
KongXiangyue 0:bd2ecb743ed5 342 }
KongXiangyue 0:bd2ecb743ed5 343 //max5
KongXiangyue 0:bd2ecb743ed5 344 for (int i = 48; i < (48+((j55-408)/10)); i++){
KongXiangyue 0:bd2ecb743ed5 345 colors[i] = (rgb_color){ 200,2,200 };
KongXiangyue 0:bd2ecb743ed5 346 }
KongXiangyue 0:bd2ecb743ed5 347
KongXiangyue 0:bd2ecb743ed5 348 ledStrip.write(colors, LED_COUNT);
KongXiangyue 0:bd2ecb743ed5 349 }*/