I was rereading through the thread and i figured it cant hurt to put the code up here so here it is:
/* David Wang
* Code that takes audio input from a 3.5mm cable
* and flashes an LED strip based on the frequency
* of the music.
*
* HUGE thanks to the arduino community
* If you see your code here, I owe you my gratitude
*
*/
int analogPin = 0; // MSGEQ7 OUT
int strobePin = 2; // MSGEQ7 STROBE
int resetPin = 4; // MSGEQ7 RESET
int spectrumValue[7];
// MSGEQ7 OUT pin produces values around 50-80
// when there is no input, so use this value to
// filter out a lot of the chaff.
int filterValue = 80;
// LED pins connected to the PWM pins on the Arduino
int ledPinR = 9;
int ledPinG = 10;
int ledPinB = 11;
void setup()
{
Serial.begin(9600);
// Read from MSGEQ7 OUT
pinMode(analogPin, INPUT);
// Write to MSGEQ7 STROBE and RESET
pinMode(strobePin, OUTPUT);
pinMode(resetPin, OUTPUT);
// Set analogPin's reference voltage
analogReference(DEFAULT); // 5V
// Set startup values for pins
digitalWrite(resetPin, LOW);
digitalWrite(strobePin, HIGH);
}
void loop()
{
// Set reset pin low to enable strobe
digitalWrite(resetPin, HIGH);
digitalWrite(resetPin, LOW);
// Get all 7 spectrum values from the MSGEQ7
for (int i = 0; i < 7; i++)
{
digitalWrite(strobePin, LOW);
delayMicroseconds(30); // Allow output to settle
spectrumValue = analogRead(analogPin);
// Constrain any value above 1023 or below filterValue
spectrumValue = constrain(spectrumValue, filterValue, 1023);
// Remap the value to a number between 0 and 255
spectrumValue = map(spectrumValue, filterValue, 1023, 0, 255);
// Remove serial stuff after debugging
Serial.print(spectrumValue);
Serial.print(" ");
digitalWrite(strobePin, HIGH);
}
Serial.println();
// Write the PWM values to the LEDs
// I find that with three LEDs, these three spectrum values work the best
analogWrite(ledPinR, spectrumValue[1]);
analogWrite(ledPinG, spectrumValue[4]);
analogWrite(ledPinB, spectrumValue[6]);
}