// https://www.hackster.io/AhmedDarwish/dancing-fountain-arduino-with-msgeq7-spectrum-analyzer-a1fd46
// test for Arduino Nano
#define msg7RESET 3 // pin 7 on MSGEQ7
#define msg7Strobe 2 // pin 4 on MSGEQ7
#define msg7DCout 0 // pin 3 on MSGEQ7
const int LEDpins[7] = {4,5,6,7,8,9,10};
unsigned short numLEDs = 119; //per block
unsigned short LEDsPerStrip = numLEDs / 7;
unsigned short minMAPlimit = 0; //limits used to convert MSGEQ7 values
unsigned short maxMAPlimit = LEDsPerStrip;
unsigned short noiseFilter = 90; //used to get rid of unwanted noise
unsigned short readDataDelay = 3;
int bands[7];
void setup()
{
Serial.begin(115200);
Serial.println("Start setup");
// for (int x=0; x<7; x++)
// {
// pinMode(LEDpins[x], OUTPUT);
// }
pinMode(msg7RESET, OUTPUT);
digitalWrite(msg7RESET, LOW);
pinMode(msg7Strobe, OUTPUT);
digitalWrite(msg7Strobe, LOW);
pinMode(msg7DCout, INPUT);
}
void loop()
{
readMSGEQ7();
for (int i = 0 ; i < 7 ; i++)
{
Serial.print(i);
Serial.print(" - ");
Serial.println(bands[i]);
}
// digitalWrite(msg7RESET, HIGH);
// delay(5);
// digitalWrite(msg7RESET, LOW);
// for (int x = 0 ; x < 7 ; x++)
// {
// //Serial.print("x value : ");
// //Serial.println(x);
// digitalWrite(msg7Strobe, LOW);
// delayMicroseconds(35);
// int spectrumRead = analogRead(msg7DCout);
// //int spectrumRead = random(10, 1024);
// //Serial.print("x spectrumRead : ");
// //Serial.println(spectrumRead);
// int PWMvalue = map(spectrumRead, 0, 1024, 0, 255);
// if (PWMvalue < 50)
// PWMvalue = PWMvalue / 2;
// analogWrite(LEDpins[x], PWMvalue);
// //digitalWrite(LEDpins[x], HIGH);
// digitalWrite(msg7Strobe, HIGH);
// //Serial.println(PWMvalue);
// //delay(500);
// }
delay(3000);
}
void readMSGEQ7() {
digitalWrite(msg7RESET, HIGH);
delayMicroseconds(2);
digitalWrite(msg7RESET, LOW);
delayMicroseconds(75);
for (int i = 0 ; i < 7 ; i++)
{
digitalWrite(msg7Strobe, LOW);
//delayMicroseconds(40);
bands[i] = analogRead(msg7DCout);
digitalWrite(msg7Strobe, HIGH);
bands[i] = constrain(bands[i], noiseFilter, 1023); //getting rid of that noise
//rightMSGEQ[i] = constrain(rightMSGEQ[i], noiseFilter, 1023);
//bands[i] = map(bands[i], noiseFilter, 1023, minMAPlimit, maxMAPlimit); //convert to more suitable values
//rightMSGEQ[i] = map(rightMSGEQ[i], noiseFilter, 1023, minMAPlimit, maxMAPlimit);
delayMicroseconds(readDataDelay);
}
digitalWrite(msg7Strobe, LOW);
digitalWrite(msg7RESET, LOW);
delayMicroseconds(10);
}