#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 7 // neopixels
#define NUMPIXELS 256
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int strobePin = 5; // MSGEQ7 Strobe
int resetPin = 3; // MSGEQ7 Reset
int outPin = A0; // MSGEQ7 Output
int level[7]; //7 frequency bands
int l;
uint32_t off = pixels.Color(255,0,0);
uint32_t red = pixels.Color(1,1,255);
uint32_t start = pixels.Color(5,4,0);
uint32_t blue = pixels.Color(1,0,3);
uint32_t orange = pixels.Color(210,200,200);
void setup()
{
Serial.begin(9600);
pinMode(strobePin, OUTPUT);
pinMode(resetPin, OUTPUT);
pinMode(outPin, INPUT);
pinMode(3,OUTPUT);
digitalWrite(resetPin, LOW);
digitalWrite(strobePin, LOW);
delay(1);
digitalWrite(resetPin, HIGH); // Reseting MSGEQ7 when arduino reset pin is hit
delay(1);
digitalWrite(resetPin, LOW);
digitalWrite(strobePin, HIGH);
delay(1);
pixels.begin();
pixels.show(); // reset pixels
for (int i = 0; i < 270; i++)
{
int ii = i-7; // effect at reset (i found this online and thought it was pretty cool so i included it)
pixels.setPixelColor(i, start);
pixels.setPixelColor(ii, blue);
pixels.show();
delay(2);
}
}
void LEDoff1(int a,int b,int c,int d,int e,int f,int g,int h)
{
for (int i=a; i <=h; i++)
{
pixels.setPixelColor(i, off);
pixels.show();
}
}
void LEDoff2(int a,int b,int c,int d,int e,int f,int g,int h)
{
for (int i=a; i >=h; i--)
{
pixels.setPixelColor(i, off);
pixels.show();
}
}
void LED0(int a,int b,int c,int d,int e,int f,int g,int h, uint32_t blue)
{
pixels.setPixelColor(a, orange);
for (int i=b; i <= h; i++) pixels.setPixelColor(i, off);
}
void LED1(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, orange);
pixels.setPixelColor(b, orange);
for (int i=h; i <= c; i++) pixels.setPixelColor(i, off);
}
void LED2(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, red);
pixels.setPixelColor(b, orange);
pixels.setPixelColor(c, orange);
for (int i=d; i <= h; i++) pixels.setPixelColor(i, off);
}
void LED3(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, red);
pixels.setPixelColor(b, red);
pixels.setPixelColor(c, orange);
pixels.setPixelColor(d, orange);
for (int i=h; i <= e; i++) pixels.setPixelColor(i, off);
}
void LED4(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, red);
pixels.setPixelColor(b, red);
pixels.setPixelColor(c, red);
pixels.setPixelColor(d, orange);
pixels.setPixelColor(e, orange);
for (int i=f; i <= h; i++) pixels.setPixelColor(i, off);
}
void LED5(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, red);
pixels.setPixelColor(b, red);
pixels.setPixelColor(c, red);
pixels.setPixelColor(d, red);
pixels.setPixelColor(e, orange);
pixels.setPixelColor(f, orange);
for (int i=h; i <= g; i++) pixels.setPixelColor(i, off);
}
void LED6(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, red);
pixels.setPixelColor(b, red);
pixels.setPixelColor(c, red);
pixels.setPixelColor(d, red);
pixels.setPixelColor(e, red);
pixels.setPixelColor(f, orange);
pixels.setPixelColor(g, orange);
for (int i=h; i <= h; i++) pixels.setPixelColor(i, off);
}
void LED7(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, red);
pixels.setPixelColor(b, red);
pixels.setPixelColor(c, red);
pixels.setPixelColor(d, red);
pixels.setPixelColor(e, red);
pixels.setPixelColor(f, red);
pixels.setPixelColor(g, orange);
pixels.setPixelColor(h, orange);
for (int i=h; i <=h; i++) pixels.setPixelColor(i, off);
}
void LED8(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, red);
pixels.setPixelColor(b, red);
pixels.setPixelColor(c, red);
pixels.setPixelColor(d, red);
pixels.setPixelColor(e, red);
pixels.setPixelColor(f, red);
pixels.setPixelColor(g, orange);
pixels.setPixelColor(h, orange);
}
void LED9(int a,int b,int c,int d,int e,int f,int g,int h)
{
pixels.setPixelColor(a, red);
pixels.setPixelColor(b, red);
pixels.setPixelColor(c, red);
pixels.setPixelColor(d, red);
pixels.setPixelColor(e, red);
pixels.setPixelColor(f, red);
pixels.setPixelColor(g, orange);
pixels.setPixelColor(h, orange);
}
void line(int a,int b,int c,int d,int e,int f,int g,int h)
{
switch (l)
{
case 93 ... 114:
LED0(a,b,c,d,e,f,g,h,blue);
break;
case 115 ... 149:
LED1(a,b,c,d,e,f,g,h);
break;
case 150 ... 174:
LED2(a,b,c,d,e,f,g,h);
break;
case 175 ... 209:
LED3(a,b,c,d,e,f,g,h);
break;
case 210 ... 244:
LED4(a,b,c,d,e,f,g,h);
break;
case 245 ... 279:
LED5(a,b,c,d,e,f,g,h);
break;
case 280 ... 314:
LED6(a,b,c,d,e,f,g,h);
break;
case 315 ... 349:
LED7(a,b,c,d,e,f,g,h);
break;
case 350 ... 420:
LED8(a,b,c,d,e,f,g,h);
break;
case 421 ... 1024:
LED9(a,b,c,d,e,f,g,h);
break;
}
}
void loop()
{
// Cycle through each frequency band by pulsing the strobe.
for (int i = 0; i < 7; i++)
{
digitalWrite (strobePin, LOW);
delayMicroseconds (12);
level[i] = analogRead (outPin);
digitalWrite (strobePin, HIGH);
delayMicroseconds (12);
}
{
l = level [0];
line(0,1,2,3,4,5,6,7);
line(15,14,13,12,11,10,9,8);
line(16,17,18,19,20,21,22,23);
line(31,30,29,28,27,26,25,24);
line(32,33,34,35,36,37,38,39);
if (l >= 92) LEDoff1(0,1,2,3,4,5,6,7),(15,14,13,12,11,10,9,8),(16,17,18,19,20,21,22,23),(31,30,29,28,27,26,25,24),(32,33,34,35,36,37,38,39);
l = level [1];
line(47,46,45,44,43,42,41,40);
line(48,49,50,51,52,53,54,55);
line(63,62,61,60,59,58,57,56);
line(64,65,66,67,68,69,70,71);
if (l <= 92) LEDoff2(47,46,45,44,43,42,41,40),(48,49,50,51,52,53,54,55),(63,62,61,60,59,58,57,56),(64,65,66,67,68,69,70,71);
l = level [2];
line(80,81,82,83,84,85,86,87);
line(95,94,93,92,91,90,89,88);
line(96,97,98,99,100,101,102,103);
line(111,110,109,108,107,106,105,104);
line(79,78,77,76,75,74,73,72);
if (l <= 92) LEDoff1(79,78,77,76,75,74,73,72),(80,81,82,83,84,85,86,87),(95,94,93,92,91,90,89,88),(96,97,98,99,100,101,102,103),(111,110,109,108,107,106,105,104);
l = level [3];
line(112,113,114,115,116,117,118,119);
line(127,126,125,124,123,122,121,120);
line(128,129,130,131,132,133,134,135);
line(143,142,141,140,139,138,137,136);
if (l <= 92) LEDoff2(112,113,114,115,116,117,118,119),(127,126,125,124,123,122,121,120),(128,129,130,131,132,133,134,135),(143,142,141,140,139,138,137,136);
l = level [4];
line(144,145,146,147,148,149,150,151);
line(159,158,157,156,155,154,153,152);
line(160,161,162,163,164,165,166,167);
line(175,174,173,172,171,170,169,168);
line(176,177,178,179,180,181,182,183);
if (l <= 92) LEDoff1(144,145,146,147,148,149,150,151),(159,158,157,156,155,154,153,152),(160,161,162,163,164,165,166,167),(175,174,173,172,171,170,169,168),(176,177,178,179,180,181,182,183);
l = level [5];
line(191,190,189,188,187,186,185,184);
line(192,193,194,195,196,197,198,199);
line(207,206,205,204,203,202,201,200);
line(208,209,210,211,212,213,214,215);
if (l <= 92) LEDoff2(191,190,189,188,187,186,185,184),(192,193,194,195,196,197,198,199),(207,206,205,204,203,202,201,200),(208,209,210,211,212,213,214,215);
l = level [6];
line(223,222,221,220,219,218,217,216);
line(224,225,226,227,228,229,230,231);
line(239,238,237,236,235,234,233,232);
line(240,241,242,243,244,245,246,247);
line(255,254,253,252,251,250,249,248);
if (l <= 92) LEDoff1(223,222,221,220,219,218,217,216),(224,225,226,227,228,229,230,231),(239,238,237,236,235,234,233,232),(240,241,242,243,244,245,246,247),(255,254,253,252,251,250,249,248);
}
}
Comments
Please log in or sign up to comment.