Paso 3: El código...
La codificación es bastante sencillo pero puede necesitar algún ajuste para conseguirlo como le gusta. Tomé prestado este código del tutorial de dwang4 así que muchas gracias a él por su trabajo en él. Otros instructables de órgano color tendrá código similar que se puede analizar por su cuenta. El filterValue entero y el valor de retardo son los dos que tendrán el mayor impacto en la funcionalidad de las luces. filterValue filtrará hacia fuera algunas de las lecturas de frecuencia más baja. Muchas veces, la señal de MSGEQ7 tendrá alguna pequeña cantidad de ruido. Ajustar este valor permite que las luces que reaccionan mejor con la música en vez de ser todos del lugar. Fui con un muy alto valor para la mina (170) pero definitivamente deberías jugar con ella para ver lo que más le convenga. El valor de retardo es también algo que debe experimentar hasta encontrar uno que reacciona cómo desea para su proyecto. Aquí hay un enlace a un pastebin con el código que también se publican a continuación:int analogPin = 0;
int strobePin = 2;
int resetPin = 4;
int spectrumValue [7];
filterValue int = 170;
int ledPinR = 9;
int ledPinG = 10;
int ledPinB = 11;
void setup()
{
Serial.Begin(9600);
pinMode (analogPin, entrada);
pinMode (strobePin, salida);
pinMode (resetPin, salida);
analogReference(DEFAULT);
digitalWrite (resetPin, bajo);
digitalWrite (strobePin, HIGH);
}
void loop()
{
digitalWrite (resetPin, HIGH);
digitalWrite (resetPin, bajo);
para (int i = 0; i < 7; i ++)
{
digitalWrite (strobePin, bajo);
delayMicroseconds(45);
spectrumValue [i] = analogRead(analogPin);
spectrumValue [i] = limitar (spectrumValue [i], filterValue, 1023);
spectrumValue [i] = mapa (spectrumValue [i], filterValue, 1023, 0, 255);
Serial.Print(spectrumValue[i]);
Serial.Print("");
digitalWrite (strobePin, HIGH);
}
Serial.println();
analogWrite (ledPinR, spectrumValue[1]);
analogWrite (ledPinG, spectrumValue[4]);
analogWrite (ledPinB, spectrumValue[6]);
}