Stap 1: Stappen 3/4 alternatieve FastLED
De Arduino kan worden geprogrammeerd met de FastLED 3.1 NoisePlusPalette https://github.com/FastLED/FastLED/tree/master/exa... Er is een voorbeeld video van dit opgenomen boven. Dan moet u ook de FastLED 3.1 Library op de computer die u de arduino met programmeert installeren. https://github.com/FastLED/FastLED
Wees alsjeblieft zeker om te veranderen van de pin-codes in het programma zoals in de onderstaande code.
Als u een voeding voor je Arduino gebruikt kunt u eenvoudig inschakelen de macht daartoe en vervolgens de bevoegdheid om de LED's en bent u go!
CODE
---------------------------------------------------------------------------------
#include
#define LED_PIN 3 #define DATA_PIN 2 #define CLOCK_PIN 3 #define NUM_LEDS 120 #define helderheid 64 #define LED_TYPE WS2801 #define COLOR_ORDER GBR CRGB leds [NUM_LEDS];
#define UPDATES_PER_SECOND 100
Dit voorbeeld ziet u verschillende manieren instellen en gebruiken van de "paletten" van kleuren / / met FastLED. / / Deze compacte paletten bieden een gemakkelijke manier om opnieuw colorize uw / / animatie op de vlieg, snel, eenvoudig en met lage overhead. / / GEBRUIK van paletten is veel eenvoudiger in de praktijk dan in theorie, dus eerst enkel / / uitvoeren van deze schets, en Bekijk de mooie lichten als je dan via leest / / de code. Hoewel deze schets acht (of meer) verschillende kleurenschema's heeft, / / de hele schets compileert naar ongeveer 6.5 K op AVR. / / FastLED biedt een aantal vooraf geconfigureerde kleurenpaletten en maakt het / / zeer eenvoudig om uw eigen kleurenschema's met paletten. / / Sommige notes op de meer abstracte 'theory and practice' van / / FastLED compacte paletten zijn aan de onderkant van dit bestand.
CRGBPalette16 currentPalette; TBlendType currentBlending;
extern CRGBPalette16 myRedWhiteBluePalette; extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM;
void setup {vertragen (3000); / / power-up van veiligheid vertragen FastLED.addLeds (LED's, NUM_LEDS); FastLED.setBrightness (helderheid); currentPalette = RainbowColors_p; currentBlending = mix; }
void loop {ChangePalettePeriodically();
statische uint8_t startIndex = 0; startIndex = startIndex + 1; / * bewegings-snelheid * /
FillLEDsFromPaletteColors (startIndex);
FastLED.show(); FastLED.delay(1000 / UPDATES_PER_SECOND); }
VOID FillLEDsFromPaletteColors (uint8_t colorIndex) {uint8_t helderheid = 255; voor (int i = 0; ik < NUM_LEDS; i ++) {leds [i] = ColorFromPalette (currentPalette, colorIndex, helderheid, currentBlending); colorIndex += 3;}}
Er zijn verscheidene verschillende paletten van kleuren hier gedemonstreerd. / / FastLED biedt verschillende 'vooraf ingesteld' paletten: RainbowColors_p, RainbowStripeColors_p, / / OceanColors_p, CloudColors_p, LavaColors_p, ForestColors_p en PartyColors_p. / / / / Bovendien, kunt u handmatig uw eigen kleurenpaletten opgeven, of u kunt schrijven / / code waarmee kleurenpaletten op de vlieg. Alle worden hier getoond.
VOID ChangePalettePeriodically() {uint8_t tweedehands = (millis() / 1000) 60%; statische uint8_t lastSecond = 99; als (lastSecond! = tweedehands) {lastSecond = tweedehands; als (tweedehands == 0) {currentPalette = RainbowColors_p; currentBlending = mix;} als (tweedehands == 10) {currentPalette = RainbowStripeColors_p; currentBlending = NOBLEND;} als (tweedehands == 15) {currentPalette = RainbowStripeColors_p; currentBlending = mix;} als (tweedehands == 20) {SetupPurpleAndGreenPalette(); currentBlending = mix;} als (tweedehands == 25) {SetupTotallyRandomPalette(); currentBlending = mix;} als (tweedehands == 30) {SetupBlackAndWhiteStripedPalette(); currentBlending = NOBLEND;} als (tweedehands 35 ==) {SetupBlackAndWhiteStripedPalette(); currentBlending = mix;} als (tweedehands == 40) {currentPalette = CloudColors_p; currentBlending = mix;} als (tweedehands == 45) {currentPalette = PartyColors_p; currentBlending = mix; } Als (tweedehands 50 ==) {currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND;} als (tweedehands == 55) {currentPalette = myRedWhiteBluePalette_p; currentBlending = mix;}} }
Deze functie vult het palet met volledig willekeurige kleuren. VOID SetupTotallyRandomPalette() {voor (int i = 0; ik < 16; i ++) {currentPalette [i] = CHSV (random8(), 255, random8());}}
Deze functie stelt een palet van zwarte en witte strepen, / / met behulp van code. Aangezien het palet is in feite een array van / / zestien CRGB kleuren, de verschillende fill_ * functies kunnen worden gebruikt / / hen instellen. VOID SetupBlackAndWhiteStripedPalette() {/ / 'black out' alle 16 palet entries... fill_solid (currentPalette, 16, CRGB::Black); / / en stelt u elke vierde een op white. currentPalette [0] = CRGB::White; currentPalette [4] = CRGB::White; currentPalette [8] = CRGB::White; currentPalette [12] = CRGB::White;
}
Deze functie stelt een palet van paarse en groene strepen. VOID SetupPurpleAndGreenPalette() {CRGB paars = CHSV (HUE_PURPLE, 255, 255); CRGB groen = CHSV (HUE_GREEN, 255, 255); CRGB zwart = CRGB::Black; currentPalette = CRGBPalette16 (groen, groen, zwart, zwart, paars, paars, zwart, zwart, groen, groen, zwart, zwart, paars, paars, zwart, zwart); }
Dit voorbeeld ziet u hoe u een statische kleurenpalet / / die is opgeslagen in PROGMEM (flash), die bijna altijd meer is / / overvloedig dan RAM. Een statische PROGMEM palet uitzien / / 64 bytes van flash inneemt. Const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM = {CRGB::Red, CRGB::Gray, / / 'wit' is te licht in vergelijking met rode en blauwe CRGB::Blue, CRGB::Black,
CRGB::Red, CRGB::Gray, CRGB::Blue, CRGB::Black,
CRGB::Red, CRGB::Red, CRGB::Gray, CRGB::Gray, CRGB::Blue, CRGB::Blue, CRGB::Black, CRGB::Black};
Additionl c HTING FastLED compact paletten: / / / / normaal gesproken in computergraphics, het palet (of 'kleur opzoektabel') / / 256 items, elk met een specifieke 24-bits RGB-kleur heeft. U kunt vervolgens / / index in het kleurenpalet met behulp van een eenvoudige 8-bit (één byte) waarde. Een kleurenpalet van 256-ingang neemt opwaarts 768 bytes RAM, welke op Arduino / / is misschien wel "teveel" bytes. / / FastLED biedt traditionele 256-element paletten, voor setups die / / de kosten van 768 bytes in het RAM kan veroorloven. / / FastLED biedt echter ook een compacte alternatief. FastLED biedt / / paletten die 16 verschillende vermeldingen opslaan, maar kunnen worden geopend als / / ze eigenlijk hebben 256 vermeldingen; Dit wordt bereikt door interpoleren / / tussen de 16 expliciete vermeldingen om vijftien tussentijdse palet te maken / / posten tussen elk paar. / / Dus bijvoorbeeld, als u de eerste twee expliciete posten van een compacte instellen / / palet groen (0,255,0) en blauw (0,0,255), en vervolgens opgehaald / / eerste zestien vermeldingen uit het virtuele palet (van 256), you 'd get / / groen, gevolgd door een vloeiend verloop van groen naar blauw, en vervolgens blauw.