Fast Led Fire 2012 an mehreren LED-Streifen

Hallo Zusammen

Ich möchte mir aus mehreren nebeinander angeordneten WS 2812b Streifen eine Art Lagerfeuersimulation aufbauen.
Ich bin dabei auf die Fast Led Lib gestossen und habe es aus den Beispielen versucht.
Mit einen Streifen läuft es problemlos.Ist ja auch kein Wunder den es ist ja unverändert aus der Bibliothek.
Wenn ich jetzt alle Programmteile kopiere und sie mit 1 und 2 zuordne sollten ich ja an zwei verschiedenen Pins die Led leuchten lassen können.
Leider ist es so dass zwar beide Sreifen leuchten und es wie Feuer aussieht, aber sie machen genau das selbe (gleiche Helligkeit,gleiche Flammenhöhe usw.)
Dasselbe hätte ich geschafft wenn ich beide Datenleitungen an den selben Pin löte.
Kann mir jemand vielleicht mal einen Tipp geben?
Eventuell ist es mit der Fast Led Lib gar nicht möglich mehrere Pins gleichzeitig unabhängig zu bedienen?
Auch andere Lösungen sind gerne willkommen.
Gerne möchte ich aber bei den Ws2812 Streifen bleiben.
Besten Dank im Voraus!

#include <FastLED.h>

#define LED_PIN1     3
#define LED_PIN2     5
#define COLOR_ORDER1 GRB
#define COLOR_ORDER2 GRB
#define CHIPSET1     WS2811
#define CHIPSET2     WS2811
#define NUM_LEDS1    19
#define NUM_LEDS2    19


#define BRIGHTNESS1  100
#define FRAMES_PER_SECOND1 20
#define BRIGHTNESS2  200
#define FRAMES_PER_SECOND2 60

bool gReverseDirection = false;

CRGB leds[NUM_LEDS1];


void setup() {
  delay(3000); // sanity delay
  FastLED.addLeds<CHIPSET1, LED_PIN1, COLOR_ORDER1>(leds, NUM_LEDS1).setCorrection( TypicalLEDStrip );
  FastLED.setBrightness( BRIGHTNESS1 );
  FastLED.addLeds<CHIPSET2, LED_PIN2, COLOR_ORDER2>(leds, NUM_LEDS2).setCorrection( TypicalLEDStrip );
  FastLED.setBrightness( BRIGHTNESS2 );
}

void loop()
{
  // Add entropy to random number generator; we use a lot of it.
  // random16_add_entropy( random());

  Fire20121(); // run simulation frame
  Fire20122(); // run simulation frame
  
  FastLED.show(); // display this frame
  FastLED.delay(1000 / FRAMES_PER_SECOND1);
}


// Fire2012 by Mark Kriegsman, July 2012
// as part of "Five Elements" shown here: http://youtu.be/knWiGsmgycY
//// 
// This basic one-dimensional 'fire' simulation works roughly as follows:
// There's a underlying array of 'heat' cells, that model the temperature
// at each point along the line.  Every cycle through the simulation, 
// four steps are performed:
//  1) All cells cool down a little bit, losing heat to the air
//  2) The heat from each cell drifts 'up' and diffuses a little
//  3) Sometimes randomly new 'sparks' of heat are added at the bottom
//  4) The heat from each cell is rendered as a color into the leds array
//     The heat-to-color mapping uses a black-body radiation approximation.
//
// Temperature is in arbitrary units from 0 (cold black) to 255 (white hot).
//
// This simulation scales it self a bit depending on NUM_LEDS; it should look
// "OK" on anywhere from 20 to 100 LEDs without too much tweaking. 
//
// I recommend running this simulation at anywhere from 30-100 frames per second,
// meaning an interframe delay of about 10-35 milliseconds.
//
// Looks best on a high-density LED setup (60+ pixels/meter).
//
//
// There are two main parameters you can play with to control the look and
// feel of your fire: COOLING (used in step 1 above), and SPARKING (used
// in step 3 above).
//
// COOLING: How much does the air cool as it rises?
// Less cooling = taller flames.  More cooling = shorter flames.
// Default 50, suggested range 20-100 
#define COOLING1  55
#define COOLING2  80

// SPARKING: What chance (out of 255) is there that a new spark will be lit?
// Higher chance = more roaring fire.  Lower chance = more flickery fire.
// Default 120, suggested range 50-200.
#define SPARKING1 100
#define SPARKING2 120


void Fire20121()
{
// Array of temperature readings at each simulation cell
  static byte heat[NUM_LEDS1];

  // Step 1.  Cool down every cell a little
    for( int i = 0; i < NUM_LEDS1; i++) {
      heat[i] = qsub8( heat[i],  random8(0, ((COOLING1 * 10) / NUM_LEDS1) + 2));
    }
  
    // Step 2.  Heat from each cell drifts 'up' and diffuses a little
    for( int k= NUM_LEDS1 - 1; k >= 2; k--) {
      heat[k] = (heat[k - 1] + heat[k - 2] + heat[k - 2] ) / 3;
    }
    
    // Step 3.  Randomly ignite new 'sparks' of heat near the bottom
    if( random8() < SPARKING1 ) {
      int y = random8(7);
      heat[y] = qadd8( heat[y], random8(160,255) );
    }

    // Step 4.  Map from heat cells to LED colors
    for( int j = 0; j < NUM_LEDS1; j++) {
      CRGB color = HeatColor( heat[j]);
      int pixelnumber;
      if( gReverseDirection ) {
        pixelnumber = (NUM_LEDS1-1) - j;
      } else {
        pixelnumber = j;
      }
      leds[pixelnumber] = color;
    }
}
void Fire20122()
{
// Array of temperature readings at each simulation cell
  static byte heat[NUM_LEDS2];

  // Step 1.  Cool down every cell a little
    for( int i = 0; i < NUM_LEDS2; i++) {
      heat[i] = qsub8( heat[i],  random8(0, ((COOLING2 * 10) / NUM_LEDS2) + 2));
    }
  
    // Step 2.  Heat from each cell drifts 'up' and diffuses a little
    for( int k= NUM_LEDS2 - 1; k >= 2; k--) {
      heat[k] = (heat[k - 1] + heat[k - 2] + heat[k - 2] ) / 3;
    }
    
    // Step 3.  Randomly ignite new 'sparks' of heat near the bottom
    if( random8() < SPARKING2 ) {
      int y = random8(7);
      heat[y] = qadd8( heat[y], random8(160,255) );
    }

    // Step 4.  Map from heat cells to LED colors
    for( int j = 0; j < NUM_LEDS2; j++) {
      CRGB color = HeatColor( heat[j]);
      int pixelnumber;
      if( gReverseDirection ) {
        pixelnumber = (NUM_LEDS2-1) - j;
      } else {
        pixelnumber = j;
      }
      leds[pixelnumber] = color;
    }
}
CRGB leds[NUM_LEDS1];

Wenn Du 2 getrennte Led-Streifen ansteuern willst mußt Du auch 2 Objekte definieren,
Grüße Uwe

hi,

Du schreibst in das array leds erst mit fire20121(), dann mit fire20122() rein, und dann zeigst Du mit show, was Du mit der zweiten funktion geschrieben hast.

gruß stefan

EDIT: bozen war schneller...

Besten Dank für die schnellen Antworten!
Ich werde ausprobieren.Da habe ich irgendwie nicht alles kopiert.
Grüsse