/******************************************************************************************************************************************************** * * * Project: FFT Spectrum Analyzer * * Target Platform: ESP32 * * * * Version: 1.0 * * Hardware setup: See github * * Spectrum analyses done with analog chips MSGEQ7 * * * * Mark Donners * * The Electronic Engineer * * Website: www.theelectronicengineer.nl * * facebook: https://www.facebook.com/TheelectronicEngineer * * youtube: https://www.youtube.com/channel/UCm5wy-2RoXGjG2F9wpDFF3w * * github: https://github.com/donnersm * * * ********************************************************************************************************************************************************/ #pragma once /******************************************************************************************************************************** * ** SUB Rountines related to Paterns and Peaks ** ********************************************************************************************************************************/ #ifdef Ledstrip //************ Mode 0 *********** void changingBarsLS(int band, int barHeight) { int xStart = BAR_WIDTH * band; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { for (int y = TOP; y >= 0; y--) { if(y >= TOP - barHeight){ matrix -> drawPixel(x, y, CHSV(ChangingBar_Color)); } else { matrix->drawPixel(x, y, CRGB(0, 0, 0)); // make unused pixel in a band black } } } } //************ Mode 1 *********** void TriBarLS(int band, int barHeight) { int xStart = BAR_WIDTH * band; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { for (int y = TOP; y >= 0; y--) { if(y >= TOP - barHeight){ if (y < (kMatrixHeight/3)) matrix -> drawPixel(x, y, CHSV(TriBar_Color_Top)); //Top red else if (y > (1 *kMatrixHeight/2)) matrix -> drawPixel(x, y, CHSV(TriBar_Color_Bottom)); //green else matrix -> drawPixel(x, y, CHSV(TriBar_Color_Middle)); //yellow } else { matrix->drawPixel(x, y, CRGB(0, 0, 0)); // make unused pixel in a band black } } } } void TriPeakLS(int band) { int xStart = BAR_WIDTH * band; int peakHeight = TOP - peak[band] - 1; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { if (peakHeight < 4) matrix -> drawPixel(x, peakHeight, CHSV(TriBar_Color_Top_Peak)); //Top red else if (peakHeight > 8) matrix -> drawPixel(x, peakHeight, CHSV(TriBar_Color_Bottom_Peak)); //green else matrix -> drawPixel(x, peakHeight, CHSV(TriBar_Color_Middle_Peak)); //yellow } } //************ Mode 2 *********** void rainbowBarsLS(int band, int barHeight) { int xStart = BAR_WIDTH * band; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { for (int y = TOP; y >= 0; y--) { if(y >= TOP - barHeight){ matrix -> drawPixel(x, y, CHSV(RainbowBar_Color)); } else { matrix->drawPixel(x, y, CRGB(0, 0, 0)); // make unused pixel in a band black } } } } void NormalPeakLS(int band, int H, int S, int V) { int xStart = BAR_WIDTH * band; int peakHeight = TOP - peak[band] - 1; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { matrix -> drawPixel(x, peakHeight, CHSV(H, S, V)); } } //************ Mode 3 *********** void purpleBarsLS(int band, int barHeight) { int xStart = BAR_WIDTH * band; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { for (int y = TOP; y >= 0; y--) { if(y >= TOP - barHeight){ matrix -> drawPixel(x, y, ColorFromPalette(purplePal, y * (255 / (barHeight + 1)))); } else { matrix->drawPixel(x, y, CRGB(0, 0, 0)); // make unused pixel in a band black } } } } // for peaks see mode 2 //************ Mode 4 *********** void SameBarLS(int band, int barHeight) { int xStart = BAR_WIDTH * band; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { for (int y = TOP; y >= 0; y--) { if(y >= TOP - barHeight){ matrix -> drawPixel(x, y, CHSV(SameBar_Color1)); //blue } else { matrix->drawPixel(x, y, CRGB(0, 0, 0)); // make unused pixel in a band black } } } } // for peaks see mode 2 //************ Mode 5 *********** void SameBar2LS(int band, int barHeight) { int xStart = BAR_WIDTH * band; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { for (int y = TOP; y >= 0; y--) { if(y >= TOP - barHeight){ matrix -> drawPixel(x, y, CHSV(SameBar_Color2)); //blue } else { matrix->drawPixel(x, y, CRGB(0, 0, 0)); // make unused pixel in a band black } } } } // for peaks see mode 2 //************ Mode 6 *********** void centerBarsLS(int band, int barHeight) { int xStart = BAR_WIDTH * band; int center= TOP/2; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { if (barHeight % 2 == 0) barHeight--; if (barHeight < 0) barHeight = 1; // at least a white line in the middle is what we want int yStart = ((kMatrixHeight - barHeight) / 2); for (int y = yStart; y <= (yStart + barHeight); y++) { int colorIndex = constrain((y - yStart) * (255 / barHeight), 0, 255); matrix -> drawPixel(x, y, ColorFromPalette(heatPal, colorIndex)); } for (int y= barHeight/2;ydrawPixel(x, center+y+1, CRGB(0, 0, 0)); // make unused pixel bottom black matrix->drawPixel(x, center-y-2, CRGB(0, 0, 0)); // make unused pixel bottom black } } } //************ Mode 7 *********** void centerBars2LS(int band, int barHeight) { int xStart = BAR_WIDTH * band; int center= TOP/2; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { if (barHeight % 2 == 0) barHeight--; if (barHeight < 0) barHeight = 1; // at least a white line in the middle is what we want int yStart = ((kMatrixHeight - barHeight) / 2); for (int y = yStart; y <= (yStart + barHeight); y++) { int colorIndex = constrain((y - yStart) * (255 / barHeight), 0, 255); matrix -> drawPixel(x, y, ColorFromPalette(markPal, colorIndex)); } for (int y= barHeight/2;ydrawPixel(x, center+y+1, CRGB(0, 0, 0)); // make unused pixel bottom black matrix->drawPixel(x, center-y-2, CRGB(0, 0, 0)); // make unused pixel bottom black } } } //************ Mode 8 *********** void centerBars3LS(int band, int barHeight) { int xStart = BAR_WIDTH * band; int center= TOP/2; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { if (barHeight % 2 == 0) barHeight--; if (barHeight < 0) barHeight = 1; // at least a white line in the middle is what we want int yStart = ((kMatrixHeight - barHeight) / 2); for (int y = yStart; y <= (yStart + barHeight); y++) { int colorIndex = constrain((y - yStart) * (255 / barHeight), 0, 255); matrix -> drawPixel(x, y, ColorFromPalette(markPal2, colorIndex)); } for (int y= barHeight/2;ydrawPixel(x, center+y+1, CRGB(0, 0, 0)); // make unused pixel bottom black matrix->drawPixel(x, center-y-2, CRGB(0, 0, 0)); // make unused pixel bottom black } } } //************ Mode 9 *********** void BlackBarLS(int band, int barHeight) { int xStart = BAR_WIDTH * band; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { for (int y = TOP; y >= 0; y--) { if(y >= TOP - barHeight){ matrix->drawPixel(x, y, CRGB(0, 0, 0)); // make unused pixel in a band black } else { matrix->drawPixel(x, y, CRGB(0, 0, 0)); // make unused pixel in a band black } } } } void outrunPeakLS(int band) { int xStart = BAR_WIDTH * band; int peakHeight = TOP - peak[band] - 1; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { matrix -> drawPixel(x, peakHeight, ColorFromPalette(outrunPal, peakHeight * (255 / kMatrixHeight))); } } //************ Mode 10 *********** void TriPeak2LS(int band) { int xStart = BAR_WIDTH * band; int peakHeight = TOP - peak[band] - 1; for (int x = xStart; x < xStart + BAR_WIDTH; x++) { if (peakHeight < 4) matrix -> drawPixel(x, peakHeight, CHSV(TriBar_Color_Top_Peak2)); //Top red else if (peakHeight > 8) matrix -> drawPixel(x, peakHeight, CHSV(TriBar_Color_Bottom_Peak2)); //green else matrix -> drawPixel(x, peakHeight, CHSV(TriBar_Color_Middle_Peak2)); //yellow } } //************ Mode 10 *********** // for peaks see mode 1 #endif /******************************************************************************************************************************** * ** END SUB Rountines related to Paterns and Peaks ** ********************************************************************************************************************************/