Enkel LED strip parti belysning genom att använda arduino (3 / 4 steg)
Steg 3: kodning
Återställ PIN-kod har att ändra från hög till låg för att starta produktionen av multiplexorn från början
Strobe pin måste vara låg för att få det första värdet av frekvensband
efter att ha läst bandet strobe pin har dras för att läsa nästa frekvensband
Jag gör några filtrering för att ignorera bullret från chip.
och mappa värdena till PWM-signal av lysdioder
int analogPin = 0;
int strobePin = 7.
int resetPin = 8;
int ledred = 9;
int ledgreen = 10;
int ledblue = 11;
int spectrumValue [7].
int filter = 100;
void setup() {
Serial.BEGIN(9600);
pinMode (analogPin, ingång);
pinMode (strobePin, produktionen);
pinMode (resetPin, produktionen);
pinMode (ledred, produktionen);
pinMode (ledblue, produktionen);
pinMode (ledgreen, produktionen);
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(30);
spectrumValue [i] = analogRead(analogPin);
om (spectrumValue [i] < filter) {
spectrumValue [i] = 0;
}
spectrumValue [i] = karta (spectrumValue [i], 750-0, 0, 255);
digitalWrite (strobePin, hög);
Serial.Print(spectrumValue[i]);
Serial.Print("");
}
int redvalue = (spectrumValue [0] + spectrumValue [1] + spectrumValue[2]);
int greenvalue = (spectrumValue [3] + spectrumValue[4]);
int bluevalue = (spectrumValue [5] + spectrumValue[6]);
om (redvalue > 255)
{
redvalue = 255;
}
om (greenvalue > 255)
{
greenvalue = 255;
}
om (bluevalue > 255)
{
bluevalue = 255;
}
Serial.Print(redvalue);
Serial.Print("");
Serial.Print(greenvalue);
Serial.Print("");
Serial.Print(bluevalue);
Serial.println();
analogWrite (ledred, redvalue);
analogWrite (ledgreen, greenvalue);
analogWrite (ledblue, bluevalue);
}