Cyberpunk peruk (10 / 11 steg)
Steg 10:
Oh! I andra nyheter att använda denna kod måste du ladda ner LPD8806 biblioteket eller detta kommer inte att arbeta https://github.com/adafruit/LPD8806
#include "LPD8806.h"
#include "SPI.h"
Detta är huvudsakligen hämtade från det enkla RGB LED strand testet och bara lekte med
/*****************************************************************************/
Antalet RGB lysdioder i strand: behöver du ange hur många som är i din längsta remsa
int nLEDs = 20;
Valde 2 stift för produktion; kan vara någon giltig utgångsstift:
int dataPin = 11;
int clockPin = 13.
Första parametern är antalet lysdioder i stranda. LED-strips
är 32 lysdioder per meter, men du kan utöka eller klippa remsan. Nästa två
parametrar är SPI data och klockan stift:
LPD8806 strip = LPD8806 (nLEDs, dataPin, clockPin);
Du kan alternativt använda hårdvara SPI för snabbare skriver, bara lämna ut
data och klocka pin parametrar. Men detta begränsar använder till mycket
specifika stiften på Arduino. För "classic" Arduinos (Uno, Duemilanove,
etc.), data = pin 11, klocka = stift 13. För Arduino Mega, data = pin 51,
klockan = pin 52. För 32u4 Breakout styrelsen + och Teensy, data = pin B2,
klockan = pin B1. För Leonardo, kan detta endast göras på ICSP stiften.
LPD8806 strip = LPD8806(nLEDs);
void setup() {
Starta upp LED strip
Strip.BEGIN();
Uppdatera remsan, för att starta de är alla "off"
Strip.show();
}
void loop() {
Skicka en enkel pixel jakt i...
colorChase (remsa. Color(127, 127, 127), 500); Vit
colorChase (remsa. Color(127, 0, 0), 500); Röd
colorChase (remsa. Color(127, 127, 0), 500); Gul
colorChase (remsa. Färg (0, 127, 0), 500); Grön
colorChase (remsa. Färg (0, 127, 127), 500); Cyan
colorChase (remsa. Färg (0, 0, 127), 500); Blå
colorChase (remsa. Color(127, 0, 127), 500); Violet
Fyll hela remsan med...
colorWipe (remsa. Color(127, 0, 0), 50); Röd
colorWipe (remsa. Färg (0, 127, 0), 50); Grön
colorWipe (remsa. Färg (0, 0, 127), 50); Blå
colorWipe (strip2. Color(127, 0, 0), 50); Röd
colorWipe (strip2. Färg (0, 127, 0), 50); Grön
colorWipe (strip2. Färg (0, 0, 127), 50); Blå
Rainbow(10);
rainbowCycle(0); göra det gå igenom ganska snabbt
}
{Ogiltig rainbow (uint8_t vänta)
int i, j.
för (j = 0; j < 384; j ++) {/ / 3 cykler av alla 384 färger i hjulet
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, hjulet ((i + j) % 384));
}
Strip.show(); skriva alla pixlar
Delay(Wait);
}
}
Något annorlunda, gör en regnbåge hjulet jämnt fördelat
i kedjan
void rainbowCycle (uint8_t vänta) {
uint16_t i, j.
för (j = 0; j < 384 * 5; j ++) {/ / 5 cykler av alla 384 färger i hjulet
för (jag = 0; jag < strip.numPixels(); i ++) {
knepigt matematik! Vi använder varje pixel som en bråkdel av hela 384-färghjulet
(det är jag / strip.numPixels() del)
Tillsätt sedan i j som gör färgerna gå runt per pixel
% 384 är att göra hjulet cykla runt
strip.setPixelColor (i, hjulet (((i * 384/strip.numPixels()) + j) % 384));
}
Strip.show(); skriva alla pixlar
Delay(Wait);
}
}
Fyll prickar successivt längs remsan.
void colorWipe (uint32_t c, uint8_t vänta) {
int i;
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, c);
Strip.show();
Delay(Wait);
}
}
Jaga en prick ner hela remsan.
void colorChase (uint32_t c, uint8_t vänta) {
int i;
Starta genom att stänga alla pixlar:
för (jag = 0; jag < strip.numPixels(); i ++) strip.setPixelColor (i, 0);
Sedan Visa en bildpunkt i taget:
för (jag = 0; jag < strip.numPixels(); i ++) {
strip.setPixelColor (i, c); Ange nya pixel "på"
Strip.show(); Uppdatera LED stater
strip.setPixelColor (i, 0); Radera pixel, men inte uppdatera!
Delay(Wait);
}
Strip.show(); Uppdatera för att stänga av senaste pixel
}
/ * Hjälpare funktioner * /
Ange ett värde 0 till 384 att få ett färgvärde.
Färgerna är en övergång r - g -b - tillbaka till r
uint32_t hjul (uint16_t WheelPos)
{
byte r, g, b;
Switch(WheelPos / 128)
{
fall 0:
r = 127 - WheelPos % 128; Red ner
g = WheelPos % 128; Grön upp
b = 0; blå off
bryta;
fall 1:
g = 127 - WheelPos % 128; gröna ner
b = WheelPos % 128; blå upp
r = 0; Red ut
bryta;
fall 2:
b = 127 - WheelPos % 128; blå ner
r = WheelPos % 128; röd upp
g = 0; grön av
bryta;
}
avkastning (remsa. Color(r,g,b));
}
Yay! Nu fungerar det! ' Tis fancy! Jag med denna kod eftersom från denna kod kan du verkligen göra det göra en mängd saker, bara klippa vad du inte vill!