Stap 10:
Oh! In ander nieuws om deze code te gebruiken moet u de LPD8806 bibliotheek downloaden of gaat dit niet werken https://github.com/adafruit/LPD8806
#include "LPD8806.h"
#include "SPI.h"
Dit is hoofdzakelijk ontleend aan de eenvoudige strengtest van RGB LED en speelde rond met
/*****************************************************************************/
Aantal RGB LEDs in strand: U hoeft te geven hoeveel zijn in uw langste strip
int nLEDs = 20;
Koos van 2 pinnen voor uitvoer; kan bestaan uit elke geldige output pinnen:
int dataPin = 11;
int clockPin = 13;
De eerste parameter is het aantal LEDs in de bundel. De LED-strips
zijn 32 LEDs per meter, maar u kunt uitbreiden of snijden van de strip. Volgende twee
parameters zijn SPI gegevens en klok pinnen:
LPD8806 strip = LPD8806 (nLEDs, dataPin, clockPin);
Optioneel kunt u hardware SPI voor snellere schrijft, gewoon weglaten
de gegevens en de klok pin parameters. Maar dit wordt beperkt gebruiken om zeer
specifieke pinnen op de Arduino. Voor de "klassieke" Arduinos (Uno, Duemilanove,
enz.), data pin 11, klok = = pin 13. Voor Arduino Mega, gegevens pin 51, =
klok = pin 52. Voor 32u4 Breakout Board + en Teensy, gegevens pin B2, =
klok = pin B1. Voor Leonardo, kan dit alleen gebeuren op de ICSP pinnen.
LPD8806 strip = LPD8806(nLEDs);
VOID Setup {}
Opstarten van de LED-strip
strip.begin();
Update van de strip, om te beginnen zijn ze allemaal 'uit'
strip.show();
}
void loop {}
Stuur een eenvoudige pixel achtervolging...
colorChase (strip. Color(127, 127, 127), 500); Wit
colorChase (strip. Color(127, 0, 0), 500); Rood
colorChase (strip. Color(127, 127, 0), 500); Geel
colorChase (strip. Kleur (0, 127, 0), 500); Groen
colorChase (strip. Kleur (0, 127, 127), 500); Cyaan
colorChase (strip. Kleur (0, 0, 127), 500); Blauw
colorChase (strip. Color(127, 0, 127), 500); Violet
Vul de gehele strip met...
colorWipe (strip. Color(127, 0, 0), 50); Rood
colorWipe (strip. Kleur (0, 127, 0), 50); Groen
colorWipe (strip. Kleur (0, 0, 127), 50); Blauw
colorWipe (strip2. Color(127, 0, 0), 50); Rood
colorWipe (strip2. Kleur (0, 127, 0), 50); Groen
colorWipe (strip2. Kleur (0, 0, 127), 50); Blauw
Rainbow(10);
rainbowCycle(0); het doorlopen van de cyclus vrij snel maken
}
VOID regenboog (uint8_t wachten) {}
int i, j;
voor (j = 0; j < 384; j ++) {/ / 3 cycli van alle 384 kleuren in het wiel
voor (ik = 0; ik < strip.numPixels(); i ++) {}
strip.setPixelColor (i, wiel ((i + j) % 384));
}
strip.show(); alle pixels uitschrijven
delay(wait);
}
}
Iets anders, dit maakt het wiel van de regenboog gelijkmatig verdeeld
langs de keten
VOID rainbowCycle (uint8_t wachten) {}
uint16_t i, j;
voor (j = 0; j < 384 * 5; j ++) {/ / 5 cycli van alle 384 kleuren in het wiel
voor (ik = 0; ik < strip.numPixels(); i ++) {}
lastig math! We gebruiken elke pixel in een breuk van het volledige 384-kleurenwiel
(dat is de i / strip.numPixels() deel)
Voeg vervolgens in j waardoor dat de kleuren gaan rond per pixel
de % 384 is om het wiel cyclus rond
strip.setPixelColor (ik, wiel (((i * 384/strip.numPixels()) + j) % 384));
}
strip.show(); alle pixels uitschrijven
delay(wait);
}
}
Vul de puntjes geleidelijk langs de strip.
VOID colorWipe (uint32_t c, uint8_t wachten) {}
int i;
voor (ik = 0; ik < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c);
strip.show();
delay(wait);
}
}
Chase één punt langs de volledige strip.
VOID colorChase (uint32_t c, uint8_t wachten) {}
int i;
Start alle pixels door uit te schakelen:
voor (ik = 0; ik < strip.numPixels(); i ++) strip.setPixelColor (i, 0);
Geef één pixel tegelijk:
voor (ik = 0; ik < strip.numPixels(); i ++) {}
strip.setPixelColor (i, c); Set nieuwe pixel 'op'
strip.show(); LED Staten vernieuwen
strip.setPixelColor (i, 0); Wissen van de pixel, maar niet vernieuwen!
delay(wait);
}
strip.show(); Vernieuwen uitschakelen van de laatste pixel
}
/ * Hulpfuncties * /
Invoergegevens naar een waarde van 0 tot en met 384 om een kleurwaarde.
De kleuren zijn een r - g -b - van de overgang terug naar r
uint32_t wiel (uint16_t WheelPos)
{
byte r, g, b;
switch(WheelPos / 128)
{
Case 0:
r = 127 - WheelPos % 128; Red omlaag
g = WheelPos % 128; Groen omhoog
b = 0; blauwe off
breken;
Case 1:
g = 127 - WheelPos % 128; groene down
b = WheelPos % 128; blauwe omhoog
r = 0; rode uit
breken;
Case 2:
b = 127 - WheelPos % 128; blauwe down
r = WheelPos % 128; rode up
g = 0; groen uit
breken;
}
terugkeer (strip. Color(r,g,b));
}
Yay! Nu werkt! ' Tis fancy! Ik omvatte deze code omdat van deze code u echt allerlei dingen doen maken kunt, gewoon knippen wat u niet wilt dat uit!