Getting wired value from MSGEQ7

I’m a newbie on Arduino. I am trying to read volume from MSGEQ7 module. One chip gives me 0 all the time, and another gives me 229 or 230, both ignoring what I input. I’m confused.

I used an NodeMCU 1.0 (ESP8266 ESP12E breakout board), not sure if it matters. Input is from an earphone jack of my computer display.


#include "MSGEQ7.h"
#define pinAnalog A0
#define pinReset 2
#define pinStrobe 12
#define MSGEQ7_INTERVAL ReadsPerSecond(50)
#define MSGEQ7_SMOOTH 0 // Range: 0-255

CMSGEQ7<MSGEQ7_SMOOTH, pinReset, pinStrobe, pinAnalog> MSGEQ7;

void setup() {
  // This will set the IC ready for reading


void loop() {
  // Analyze without delay every interval
  bool newReading =;

if (newReading) {
    Serial.write("Vol: ");

Breadboard settings photo attached.

NOTE - I've never used the MSGEQ7 but I understand the concept of how it works...

Did you write that code or is it a known-working example?

The MSGEQ7 timing is critical and if it's not known-good code, the serial print statements MIGHT be messing-up the timing. Serial communication will slow-down your loop.

You may need to run it for awhile until it's giving you good data and then print the data, maybe once per second or once ever few seconds instead of printing every time through the loop. You'd use millis() for that as in the Blink Without Delay Example.

What is your schematic? Without it the photos of your bread board are less than useful.

That code is basically a call to a libiary so there is not much to say about it. While I have used this chip I would not dream of using a libiary to read it, it is so simple just to read it.

The MSGEQ7 timing is critical

No it is not. I have even read it using the ultra crap real time Raspberry Pi.

I used an NodeMCU 1.0 (ESP8266 ESP12E breakout board),

You sure that those pin numbers are right for that board? Are you running the MSGEQ7 off the 3V3 used by this board? (you need to)

Can you link to the libiary you used.