Brightness minder in tweede CylonBounce

Onderstaande heb ik op goed geluk in elkaar geflanst en probeer ik uit te breiden naar een 50 LED strip met 4 CylonBounces.
Maar ik bemerk dat nu ik er twee heb, de tweede (tussen LED 10 en 20) een beduidend minder helder licht geeft.
Iemand enig idee hoe dat kan komen?

#include <Adafruit_NeoPixel.h>
#define PIN 6
#define NUM_LEDS 20

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

// *** REPLACE FROM HERE ***
void loop() {
  CylonBounce(0xff, 0, 0, 1, 50, 50);
}

void CylonBounce(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay){

  //for(int i = 0; i < NUM_LEDS-EyeSize-2; i++) {
    for(int i = 0; i < 10-EyeSize-2; i++) {
    setAll(0,0,0);

    setPixel(i, red/10, green/10, blue/10);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, red/10, green/10, blue/10);
    
    setPixel(10+i, red/10, green/10, blue/10);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, red/10, green/10, blue/10);

    strip.show();
    delay(SpeedDelay);
  }

  delay(ReturnDelay);

  //for(int i = NUM_LEDS-EyeSize-2; i > 0; i--) {
    for(int i = 10-EyeSize-2; i > 0; i--) {
    setAll(0,0,0);
    
    setPixel(i, red/10, green/10, blue/10);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, red/10, green/10, blue/10);
    
    setPixel(10+i, red/10, green/10, blue/10);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, red/10, green/10, blue/10);

    strip.show();
    delay(SpeedDelay);
  }
 
  delay(ReturnDelay);
}
// *** REPLACE TO HERE ***

void setPixel(int Pixel, byte red, byte green, byte blue)
{
   strip.setPixelColor(Pixel, strip.Color(red, green, blue));
}

void setAll(byte red, byte green, byte blue) {
  for(int i = 0; i < NUM_LEDS; i++ ) {
    setPixel(i, red, green, blue);
  }
  strip.show();
}

Ik heb wel een idee.
Ik vermoed dat je de tweede strip, hebt gevoed door 'm aan te sluiten op de doorvoer van de eerste strip.
Wanneer dat klopt, sluit dan elke strip direct aan op de voeding, en niet op de doorvoer.
Want dan krijg je al snel dat de voeding onderweg over de vorige strip, al teveel heeft verbruikt en elke volgende strip minder voeding krijgt.

Verder, wanneer je een factor 5 groter gaat worden, moet je ook kijken of de voeding van je strips wel genoeg stroom kan leveren.
Wanneer dit ook een mogelijk probleem blijkt, heb je meerdere voedingen nodig.
Daarvan gaat de plus dan naar elke strip.
De min ook, maar dan moet je wel alle minnen ook met elkaar verbinden (dus ook de GND van je Arduino), anders krijg je weer andere interessante maar ongewenste effecten.
In dat geval kun je dit ook meten met een multimeter.
Uiteraard moet je het 3e contact (waar de data overheen gaat) wel doorlussen.
Dit doorlussen van de data doe je dan direct en dus zonder de weerstand die je mogelijk wel hebt tussen de eerste strip en je Arduino.

(Sorry voor het eerdere bericht, de editor deed ineens heel vreemd en ik kreeg dat niet goed zonder opnieuw te beginnen)

Dat klopt ongeveer wel.
Op dit moment is de strip nog één geheel van 50 LEDs. Ik had gehoopt een effect te kunnen maken zoals in de link hieronder in beweging 3 en 7 maar dan waarbij meerdere in dezelfde richting bewegen.

Ik ga knippen en plakken, zogezegd. Eens zien of dat beter wordt. Thanks!

Beetje laat misschien, maar ik ging er in mijn vorige antwoord vanuit dat je losse strips van 10 LEDs had.
Wanneer het 1 grote strip is, kun je ook 20 stuks afknippen, en dan de voeding in het midden aansluiten.
Dan gaat ie dus een keer linksom, en een keer rechtsom.
De data moet natuurlijk wel aan het begin worden aangesloten, anders gaat dat weer niet goed.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.