Hello, everyone. It's been several months since the last thread so I created a new one. You can read the previous thread here, but I'll summarize it below.
Purpose: to use the MSGEQ7 to analyze the spectrum of incoming music and output DC voltages proportional to the signal's spectrum. This will be used to control a strip of programmable LEDs.
Problem from Previous Thread: "The values I get in the serial monitor are all in the 100s. The output should range from 0-1023, scaling most likely linearly with the strength of the signal; i.e. if I play a 63Hz sine wave, the output of the 63Hz bandpass should be in the 900-1023 range. But whether I play music or specific tones (e.g. 400Hz, 2.5KHz), the output doesn't change at all. The output of every band remains in the 100-199 range."
MSGEQ7 Datasheet: here
Summary of Previous Thread suggestions:
• solderless breadboards have poor connections so maybe switch to a solerable board
• check all connections, components (resistor and capacitor values, etc.), continuity, etc.
• amplify the music signal to get a better range
What's New Since Last Thread:
I've built the circuit suggested by user Grumpy_Mike, using two separate MSGEQ7 chips (one for the left channel, one for the right channel) and an MCP602 op-amp to amplify the two audio channels. I'm using the MCP602 specifically to combat signal clipping, as it has better rail-to-rail performance than the previous op-amp used.
Here is the circuit schematic suggested by Grumpy_Mike. Pictures of it built are posted at the bottom of this post.
Only a few modifications were needed:
• 5V supply instead of 3.3V
• 15.7µF instead of 16µF due to cap values I have on me
• Strobe, Reset, OutputL, and OutputR are connected directly to an Arduino Mega instead of the MCP3002 in the schematic
Is the Problem Fixed?
No. Instead of output values in the 0s and 100s, they're in the 300s, but don't change at all. The output stays in the 300s for music, no music, 63Hz tones, 400Hz tones, etc. It seems the amplifier is working and amplifying the signal by a factor of ~3, but the circuit is still not functioning properly. I have three theories:
• Bad MSGEQ7 chips. I bought these from Sparkfun, but I've heard of other people having problems. Three new ones are being shipped right now.
• Solderless breadboards are crap. Possible, but I haven't had problems with these boards before. I'd strongly prefer not soldering this whole circuit together before proving it works.
• Bad Arduino code. I've tried using several different test programs found online, e.g. J Skoba's MSGEQ7 guide that includes his test script. No code works.
I would really appreciate any help or advice anyone can give. I'm feeling really defeated because I just can't get this project to work ![]()
P.S. I graduated so I don't have access to an oscilloscope anymore ![]()
Connections to the Arduino weren't included in these photographs in order to improve visibility. If you'd like to see how I connected it to the Arduino, please let me know!







