int spectrumStrobe = 4; // Strobe Pin int spectrumReset = 5; // Reset Pin int spectrumL[7]; // Arrays for band values int spectrumR[7]; int eqBand; // Band counter char dataL[50]; // Arrays for data output char dataR[50]; void setup() { Serial.begin(115200); pinMode(spectrumReset, OUTPUT); // reset pinMode(spectrumStrobe, OUTPUT); // strobe // This is following page 4 in the datasheet digitalWrite(spectrumReset, HIGH); // Set reset high digitalWrite(spectrumStrobe, HIGH); // Toggle the strobe pin delayMicroseconds(18); digitalWrite(spectrumStrobe, LOW); delayMicroseconds(18); digitalWrite(spectrumReset, LOW); // Set reset low digitalWrite(spectrumStrobe, HIGH); // Toggle strobe high again delayMicroseconds(18); } void readMSGEQ7() // Function to read 7 band equalizers { for(eqBand = 0; eqBand < 7; eqBand++) { digitalWrite(spectrumStrobe, LOW); // Set strobe low to begin reading delayMicroseconds(36); // Wait for the output to settle spectrumL[eqBand] = analogRead(0); // store left bands spectrumR[eqBand] = analogRead(1); // store right bands digitalWrite(spectrumStrobe, HIGH); // Set strobe high to bump to next band } } void loop() { readMSGEQ7(); // display values of left & right channel bands on serial monitor sprintf(dataL, "left: %3d - %3d - %3d - %3d - %3d - %3d - %3d", spectrumL[0], spectrumL[1], spectrumL[2], spectrumL[3], spectrumL[4], spectrumL[5], spectrumL[6]); // Display right channel in reverse, so the data output has low frequencies on the outside with high frequencies on the inside sprintf(dataR, "%3d - %3d - %3d - %3d - %3d - %3d - %3d: right", spectrumR[6], spectrumR[5], spectrumR[4], spectrumR[3], spectrumR[2], spectrumR[1], spectrumR[0]); Serial.print(dataL); Serial.print(" | "); Serial.print(dataR); Serial.println(); }