Inspired by
this project, I've decided to tweak it to work with a programmable WS2812b LED strip. However, before I can even get to the LED strip, I'm having issues with the MSGEQ7 graphic equalizer IC.
No matter what I do I am always getting "0" values from the MSGEQ7.
I am on my second MSGEQ7 chip; I still haven't ruled out the chip itself as I've heard people have had issues with them.
My circuit looks like this:

I've tried various alterations like independent power, separating grounding, using resistors or not for the stereo input, 10k resistor between pin1 and ground for stereo input, slightly different capacitors, removing the 1000uF capacitor, etc. I've tried many code changes such as messing with the reset and strobe pin highs/lows, not resetting the EQ7 every time, changing/adding microsecond delays in various places, etc.
That purple wire-connection I add/remove as needed to test the input to the EQ7.
Here's a photo of my setup: (sorry for the long wires, colors don't match diagram)

The input is a stereo plug connected to either an android phone or iphone, tested at various volume levels.
You can completely ignore the LED strip part; most of the time I don't have it hooked up. Though in the picture above it is hooked up.
Here's my code:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN 6
int analogPin = 0; // MSGEQ7 OUT
int analogPin2 = 5; // MSGEQ7 IN for debugging.
int strobePin = 2; // MSGEQ7 STROBE
int resetPin = 4; // MSGEQ7 RESET
int spectrumValue[7];
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
Serial.begin(9600);
// Write to MSGEQ7 STROBE and RESET
pinMode(strobePin, OUTPUT);
pinMode(resetPin, OUTPUT);
// Set analogPin's reference voltage
analogReference(DEFAULT); // 5V
}
void loop() {
// Set reset pin low to enable strobe
digitalWrite(resetPin, HIGH);
digitalWrite(resetPin, LOW); // HIGH to LOW resets the MSGEQ7.
// Get all 7 spectrum values from the MSGEQ7
for (int i = 0; i < 7; i++) {
digitalWrite(strobePin, HIGH);
digitalWrite(strobePin, LOW); // HIGH to LOW enables EQ7 output.
delayMicroseconds(30); // Allow output to settle
spectrumValue[i] = analogRead(analogPin);
Serial.print(spectrumValue[i]);
Serial.print(" ");
}
Serial.print(" - ");
Serial.print(analogRead(analogPin2)); // Debug the input value to the EQ7.
Serial.println();
// Write the PWM values to the LEDs
/* // Entirely commented out for now.
uint32_t c = strip.Color(255, 0, 0, 0); // Just red for now...
for (uint16_t i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, c);
}
strip.show();
*/
}
And my output
always looks like this:
0 0 0 0 0 0 0 - 163
0 0 0 0 0 0 0 - 162
0 0 0 0 0 0 0 - 173
0 0 0 0 0 0 0 - 165
0 0 0 0 0 0 0 - 162
0 0 0 0 0 0 0 - 164
0 0 0 0 0 0 0 - 164
0 0 0 0 0 0 0 - 160
0 0 0 0 0 0 0 - 157
0 0 0 0 0 0 0 - 151
0 0 0 0 0 0 0 - 182
0 0 0 0 0 0 0 - 106
And that just goes on forever...
Does anyone have any idea what could be going wrong here? I've tried so many things, and now I'm out of ideas!