Spectrum Analyzer using MSGEQ7

I am currently doing some research so I can build the a spectrum Analyzer but there is a lot of different schematics available.

Here is what I have found so far.

The spec sheet for the MSGEQ7 dated 2004 indicates using a .01uF cap on the Audio in. The spec sheet date 2011 indicates using a .1uF cap on the Audio in.

A few other schematics I have looked at use 1000pF or 10nF.

Conversion charts: 0.01uF /10nF/10000pF 0.1uF /100nF/100000pF 0.001uF/1nF/1000pF

Can anyone provide feedback as to success with any of these?

Thanks in advance.

No solution, however there are several people who made projects with the MSEGQ7 e.g. - http://arduino.cc/forum/index.php/topic,75041.0.html -

found this one with the search function in the upper right. You could check the searchresult-threads for clues.

hopes this helps,

Hello,

I've been working recently in a project using a MSGEQ7. In the link the trhead and links needed. There is also the code I programed.

Enjoy.

http://arduino.cc/forum/index.php/topic,74113.0.html

Nice! Thank you!

Hi, I'm working on a project that connected using a arduino MSGEQ7 control a number of fans to the music. The fans would go to the PWM outputs, my problem that I have very little idea of ​​programming , anyone can help me with the code? Thank you very much.

anyone can help me with the code?

Lots of people can help you with the code. Post what you have, and describe the problems you are having with it. We aren't here, though, to write code for you. For that, get your wallet out and head over to the Gigs and Collaboration section.

Here a code I used for 3 led channels,

 int strobepin = 2;
int resetpin = 3;
int freqval[7];
int ledpwm[7];
int ledchannel[3];
int play = 1;
int input = 0;



void setup(){
  Serial.begin(9600);
  pinMode(A0, 0);
  pinMode(strobepin, 1);
  pinMode(resetpin, 1);
  pinMode(5,1);
  pinMode(6,1);
  digitalWrite(6,1);


}

void loop(){
  if(play == 1){
  
  getfreq();
  for(int i = 0; i <7 ; i++)ledpwm[i] = map(freqval[i],0,1023,0,255);
  ledchannel[0] = ledpwm[0];
  ledchannel[1] = (ledpwm[3] + ledpwm[4] + ledpwm[2])/3;
  ledchannel[2] = ledpwm[6];
  if(ledchannel[0] > 25)analogWrite(9,ledchannel[0]);
  if(ledchannel[0] < 25)analogWrite(9,0);
  if(ledchannel[1] > 25)analogWrite(10,ledchannel[1]);
  if(ledchannel[1] < 25)analogWrite(10,0);
  if(ledchannel[2] > 25)analogWrite(11,ledchannel[2]);
  if(ledchannel[2] < 25)analogWrite(11,0);
  
  
  } 
  if(Serial.available() >0){
    input = Serial.read();
    if(input == 'P'){
     play = 1;
     digitalWrite(6,1);
    }
    if(input == 'S'){ 
      digitalWrite(6,0);
      play = 0;
      digitalWrite(9, 0);
      digitalWrite(10,0);
      digitalWrite(11,0);
    }
    
    Serial.print(char(input));
  }
  
  
}




void getfreq(){
  digitalWrite(resetpin, 1);
  delayMicroseconds(30);
  digitalWrite(resetpin, 0);
  for(int i = 0; i <= 7; i++){
    digitalWrite(strobepin, 0);
    analogRead(A0);
    freqval[i] = analogRead(A0);
    digitalWrite(strobepin, 1);
  }
}

This works well with leds : )

Btw I've tried it with both a .1 uf and a .01 uf cap and I couldn't tell a difference

Also if your interested here’s a code for a cool lcd bargraph with custom characters for the bars

 #include <LiquidCrystal.h>
LiquidCrystal lcd(22,23,24,25,26,27);
int strobepin = 7;
int resetpin = 8;
int freqval[7];
int ledpwm[7];
byte v0[9] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
};
byte v1[9] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
};
byte v2[9] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111,
};
byte v3[9] = {
  B00000,
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111,
  B11111,
};
byte v4[9] = {
  B00000,
  B00000,
  B00000,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};
byte v5[9] = {
  B00000,
  B00000,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};
byte v6[9] = {
  B00000,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};
byte v7[9] = {
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
  B11111,
};

void setup(){
  pinMode(A0, 0);
  pinMode(strobepin, 1);
  pinMode(resetpin, 1);
  lcd.begin(16, 2);
  pinMode(12, 1);
  analogWrite(2, 29);
 // Serial.begin(9600); //optional
  lcd.createChar(0, v0);
  lcd.createChar(1, v1);
  lcd.createChar(2, v2);
  lcd.createChar(3, v3);
  lcd.createChar(4, v4);
  lcd.createChar(5, v5);
  lcd.createChar(6, v6);
  lcd.createChar(7, v7);


}

void loop(){
  lcd.home();
  for(int i = 0; i <7 ; i++)ledpwm[i] = map(freqval[i],0,1023,0,6);
 
for(int i = 0; i < 7; i++) lcd.write(ledpwm[i]);
    getfreq();
}

void getfreq(){
  digitalWrite(resetpin, 1);
  delayMicroseconds(30);
  digitalWrite(resetpin, 0);
  for(int i = 0; i <= 7; i++){
  digitalWrite(strobepin, 0);
  analogRead(A0);
  freqval[i] = analogRead(A0);
  
  Serial.println(freqval[i]);
    digitalWrite(strobepin, 1);
  }
}