Slå upptäcka lysdioder i kådan (3 / 7 steg)
Steg 3: Koden...
Kodningen är ganska rakt framåt men kan kräva vissa justeringar för att få det hur du gillar det. Jag lånade denna koden från dwang4's tutorial så tack till honom för hans arbete på den. Annan färg orgel instructables kommer att ha liknande kod som du kan tolka på egen hand. FilterValue heltalet och försening värde är de två som har störst inverkan på funktionen av lamporna. filterValue filtrerar ut några av de lägre frekvens avläsningarna. Ofta gånger, kommer att MSGEQ7 signalen ha några små belopp av buller. Tweaking detta värde kan dina lampor att reagera bättre med musik i stället för att alla av förlägga. Jag gick med riktigt högt värde för min (170) men du bör definitivt spela med den för att se vad som passar dig. Delay värdet är också något du bör experimentera med tills du hittar en som reagerar på hur du vill för ditt projekt. Här är en länk till en pastebin med koden som bokförs också nedan:
int analogPin = 0;
int strobePin = 2;
int resetPin = 4;
int spectrumValue [7].
int filterValue = 170;
int ledPinR = 9;
int ledPinG = 10;
int ledPinB = 11;
void setup()
{
Serial.BEGIN(9600);
pinMode (analogPin, ingång);
pinMode (strobePin, produktionen);
pinMode (resetPin, produktionen);
analogReference(DEFAULT);
digitalWrite (resetPin, låg);
digitalWrite (strobePin, hög);
}
void loop()
{
digitalWrite (resetPin, hög);
digitalWrite (resetPin, låg);
för (int jag = 0; jag < 7; i ++)
{
digitalWrite (strobePin, låg);
delayMicroseconds(45);
spectrumValue [i] = analogRead(analogPin);
spectrumValue [i] = begränsa (spectrumValue [i], filterValue, 1023);
spectrumValue [i] = karta (spectrumValue [i], filterValue, 1023, 0, 255);
Serial.Print(spectrumValue[i]);
Serial.Print("");
digitalWrite (strobePin, hög);
}
Serial.println();
analogWrite (ledPinR, spectrumValue[1]);
analogWrite (ledPinG, spectrumValue[4]);
analogWrite (ledPinB, spectrumValue[6]);
}