analyse audio input
Dependencies: PololuLedStrip mbed
main.cpp@0:bd2ecb743ed5, 2014-08-07 (annotated)
- Committer:
- KongXiangyue
- Date:
- Thu Aug 07 14:24:47 2014 +0000
- Revision:
- 0:bd2ecb743ed5
AUDIO fft led
Who changed what in which revision?
User | Revision | Line number | New 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 | }*/ |