Hur man gör musik IQ Led lampor (4 / 4 steg)
Steg 4: Koden
Med tanke på den begränsade längden led Strip jag har, separeras jag lysdiodsrand i 6 delar att visa ändringar i olika frekvenser av musiken. Det finns 7 frekvenser som Audio Analyzer kan få, men du hittar ut vissa inte är ganska lätt att använda. Således måste du spela och se vad som fungerar bäst för din egen design. Du kan ta en titt på min kod och börja därifrån. Även mer komplicerade mönster kan skapas, och jag ser riktigt fram emot fler mönster.
/ * musik ansvarig led strip exempelkod skapad av Yu Sun på 07/28/2015 * /
#include
#include
#define PIN 11 //The signal pin ansluten med Arduino
#define LED_COUNT 34 //total antal lampor i remsan
#define buller 120 / / brus som du vill ska chrop bort
#define SEG 6 / / Hur många delar du vill separera lysdiodsrand i
Analyzer ljud = Analyzer (10,9,0), //Strobe pin -> 10 RST pin -> 9 Analog Pin -> 0 Adafruit_NeoPixel lysdioder =
Adafruit_NeoPixel (LED_COUNT, stift, NEO_GRB + NEO_KHZ800);
int FreqVal [7]; //create en matris att lagra värdet av olika freq
void setup()
{
Serial.BEGIN(57600);
Audio.Init();
leds.BEGIN(); Kalla detta att starta upp den LED strippen.
clearLEDs(); Denna funktion, definieras nedan, släcks alla lysdioder...
leds.show(); .. .men lysdioderna inte faktiskt uppdatera förrän du kallar detta.
}
void loop() {
Audio.ReadFreq(FreqVal);
för (int jag = 0; jag < 7; i ++) {
FreqVal[i]=constrain(FreqVal[i],NOISE,1023);
FreqVal [i] = karta (FreqVal[i],NOISE,1023,0,255);
Serial.Print (FreqVal [i]), //used för felsökning och Freq väljer
Serial.Print("");
}
int j;
tilldela olika värden
för (j = 0; j < LED_COUNT; J++) {
om (0 < = j & & j < = LED_COUNT/7)
{
set(j,FreqVal[1]); / / ställa in färg på ledde
leds.show();
Delay(1.5); / / att göra ledde transit färgen mer naturligt
}
annat if((LED_COUNT/SEG) < = j & & j < (LED_COUNT/SEG * 2))
{
set(j,FreqVal[1]);
leds.show();
Delay(1.5);
}
annat if((LED_COUNT/SEG*2) < = j & & j < (LED_COUNT/SEG * 3)) {
set(j,FreqVal[3]);
leds.show();
Delay(1.5);
}
annat if((LED_COUNT/SEG*3) < = j & & j < (LED_COUNT/SEG * 4)) {
set(j,FreqVal[4]);
leds.show();
Delay(1.5);
}
annat if((LED_COUNT/SEG*4) < = j & & j < (LED_COUNT/SEG * 5)) {
set(j,FreqVal[3]);
leds.show();
Delay(1.5); }
annat {
set(j,FreqVal[2]);
leds.show();
Delay(1.5);
}
}
}
följande funktion ange led färg utifrån sin position och freq värde
{Ogiltig uppsättning (byte ställning, int värde)
om (0 < = position & & position < LED_COUNT/SEG) {
leds.setPixelColor (position, lysdioder. Color(position*15+Value*15,position*5+Value*6,0));
}
annars om (LED_COUNT/SEG < = position & & position < LED_COUNT/SEG * 2) {
leds.setPixelColor (position, lysdioder. Color(position*5+Value*5,Value+position*2,0));
}
annars om (LED_COUNT/SEG * 2 < = position & & position < LED_COUNT/SEG * 3) {
leds.setPixelColor (position, lysdioder. Color(Value*5+position*3,Value*4+position*2,0));
}
annars om (LED_COUNT/SEG * 3 < = position & & position < LED_COUNT/SEG * 4) {
leds.setPixelColor (position, lysdioder. Color(0,Value*8+position,position*0.96+Value*2));
}
annars om (LED_COUNT/SEG * 4 < = position & & position < LED_COUNT/SEG * 5) {
leds.setPixelColor (position, lysdioder. Color(0,(Value*2+position*0.2)*3,(Value+position*0.5)*3));
}
annat {
leds.setPixelColor (position, lysdioder. Color(Value*0.4+position*0.8,Value*0.3,Value*0.5+position*0.2));
}
}
void clearLEDs()
{
för (int jag = 0; jag < LED_COUNT; i ++)
{leds.setPixelColor (i, 0);
}
}
Det är det! Njuta av sevärdheter och ljud!