Go Down

Topic: FastLED Übung (Read 165 times) previous topic - next topic

Gonmyr

Sep 09, 2019, 11:48 am Last Edit: Sep 09, 2019, 11:54 am by Gonmyr
Hallo Forum,

ich übe gerade mit der FastLED Bibliothek und einem WS2812B 24 LED Ring.
Nun gibt es dort viele fertige  Farbpaletten. z.B. OceanColors_p oder CloudColors_p
Wie kann ich das in die fertigen Beispiele einbinden?

Code: [Select]

void sinelon()
{
 // a colored dot sweeping back and forth, with fading trails
 fadeToBlackBy( leds, NUM_LEDS, 20);
 int pos = beatsin16(13,0,NUM_LEDS);
 leds[pos] += CHSV( gHue, 255, 192);
}


Hier werden ja alle Farben verwendet, wie kann ich nur die Farben einer Palette benutzen?

Danke.

Tommy56

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [*code] davor und [*/code] dahinter ohne *).
So ist er auch auf portablen Geräten lesbar. Das kannst Du auch noch nachträglich ändern.

Es ist außerdem besserm kompletten kompilierfähigen Code einzustellen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Rentner

Hallo,

hier ein Link den ich ganz gut finde.
Fast LED Wiki

Heinz

Verzweifler

Hi!
Code: [Select]

//statt:

leds[pos] += CHSV( gHue, 255, 192);

//so:

leds[pos] += ColorFromPalette(OceanColors_p, gHue);


Um nicht immer irgendwo im Code suchen zu müssen oder wenn man während der laufzeit die Palette wechseln möchte, kann man sich auch eine Variable anlegen und die immer wieder neu befüllen.

Sieh dir dazu dann das "Colorpalette" Example von FastLED an.




Gonmyr

Guten Morgen,

ich bin jetzt schon etwas weiter. Die LEDs bestehen aus einem 24Bit Ring und einem 7bit Spot.
Zusammen funktioniert es ganz gut. Habe den Spot mit dem Eingang an den Ring am Ausgang angeschlossen. Nun möchte ich aber die LEDs 25-31 separat ansteuern.
Wie muss das gemacht werden?

Code: [Select]
#include "FastLED.h"
#if FASTLED_VERSION < 3001000
#error "Requires FastLED 3.1 or later; check github for latest code."
#endif

#define DATA_PIN    4
#define LED_TYPE    WS2811
#define COLOR_ORDER RGB
#define NUM_LEDS    31
CRGB leds[NUM_LEDS];

#define BRIGHTNESS         200
#define FRAMES_PER_SECOND  120

void setup() {
  delay(3000); // 3 second delay for recovery
  // tell FastLED about the LED strip configuration
  FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  //FastLED.addLeds<LED_TYPE,DATA_PIN,CLK_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
}

uint8_t gHue = 0; // rotating "base color" used by many of the patterns

void loop()
{
  // random colored speckles that blink in and fade smoothly
  CRGBPalette16 palette = CloudColors_p;
  fadeToBlackBy( leds, 31, 10);
  int pos = random16(31);
  leds[pos] = ColorFromPalette(palette, gHue+random8(64), 255);

  FastLED.show(); 
  FastLED.delay(2000/FRAMES_PER_SECOND);

  EVERY_N_MILLISECONDS( 60 ) { gHue++; } // slowly cycle the "base color" through the rainbow
}


Dankeschön.

Gruß Gonmyr

Tommy56

Na wie die anderen auch:
Code: [Select]

leds[31]=ColorFromPalette...
leds[32]=ColorFromPalette...
...

Evtl. kannst Du diese LEDs vorher nicht berücksichtigen.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Gonmyr

ich habe es jetzt so gelöst:

Code: [Select]
  CRGBPalette16 palette1 = CloudColors_p;
  CRGBPalette16 palette2 = OceanColors_p;
  fadeToBlackBy( leds, 31, 10);
  int pos_a = random16(24);
  int pos_b = random16(24,31);
  leds[pos_a] = ColorFromPalette(palette1, gHue+random8(64), 255);
  leds[pos_b] = ColorFromPalette(palette2, gHue+random8(64), 255);


jetzt brauche ich nur noch eine Palette mit eigenen Farben.

agmue

Kommt jetzt etwas spät:

Code: [Select]
#define NUM_LEDS_RING    24
#define NUM_LEDS_SPOT    7
#define NUM_LEDS    NUM_LEDS_RING+NUM_LEDS_SPOT
CRGB leds[NUM_LEDS];
...
  int pos_a = random16(NUM_LEDS_RING);
  int pos_b = random16(NUM_LEDS_RING,NUM_LEDS);
Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Go Up