Beginners probleem aansturen led strip

Hallo
Even een vraag over onderstaande sketch als beginner ben ik bezig met het aansturen van een led strip ik heb hiervoor een gedeelte gebruikt uit een bestaande sketch (adafruit neopixel strandtest) door waardes te veranderen en vervolgens te uploaden hoop ik meer duidelijkheid te krijgen waar de waardes voor staan en wat voor invloed deze hebben op het aansturen van de led strip.Nu heb ik een vraag over wat er mis gaat als ik het aantal leds verander in de volgende programma regel: Adafruit_NeoPixel strip = Adafruit_NeoPixel(20 , PIN, NEO_GRB + NEO_KHZ800); Als ik begin met 20 gaat het programma netjes lopen over 20 lampjes als ik vervolgens het aantal aanpas naar 10 en upload gaat het programma lopen over 10 lampjes maar blijven de andere (11t/m20) nog branden in de stand waarin ze stil kwamen te staan tijdens het uploaden.Nu lijkt het dus zo te zijn dat als ik de waarde van het aantal lampjes verlaag er nog iets blijft hangen van de vorige sketch.Ik kan dit oplossen door eerst bij de drie kleuren de waarde van 255 op nul te zetten en bij de waarde van het aantal lampjes het aantal ingeven wat brand en vervolgens te uploaden dan is alles uit.Vervolgens weer de waarde 255 bij de kleur ingeven en het aantal van 10 bij de waarde voor het aantal lampjes.
Vraag 1. waarom blijven de lampjes 11t/m20 branden als ik het aantal verlaag van 20 naar 10
Vraag 2. Waarschijnlijk is dit op een makkelijkere manier optelossen dan hoe ik het gedaan heb
Als iemand mij hier mee kan helpen hoor ik dat graag
Groet Peter

#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif

#define PIN 4

// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(20 , PIN, NEO_GRB + NEO_KHZ800);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
// and minimize distance between Arduino and first pixel.  Avoid connecting
// on a live circuit...if you must, connect GND first.

void setup() {
  // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket
  //#if defined (__AVR_ATtiny85__)
   // if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
  //#endif
  // End of trinket special code


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

void loop() {
  // Some example procedures showing how to display to the pixels:
  colorWipe(strip.Color(255, 0, 0), 50); // Red (255,0,0)
  colorWipe(strip.Color(0, 255, 0), 50); // Green (0,255,0)
  colorWipe(strip.Color(0, 0, 255), 50); // Blue (0,0,255)
//colorWipe(strip.Color(0, 0, 0, 255), 50); // White RGBW
  // Send a theater pixel chase in...
//  theaterChase(strip.Color(127, 127, 127), 50); // White
 // theaterChase(strip.Color(127, 0, 0), 50); // Red
//  theaterChase(strip.Color(0, 0, 127), 50); // Blue

 // rainbow(20);
 // rainbowCycle(20);
 // theaterChaseRainbow(50);
}
// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}

LED strips zijn eigenlijk hele domme dingen. Het enige wat er gebeurt is dat de data door gesluisd wordt naar de volgende led als er data binnen komt. Dus stel je hebt 20 leds maar je stuurt er 10 aan, en de strip was uit geweest. Als je nu daarna weer led 1-10 aanstuurt, dan wordt de waarde van LED 10 doorgegeven naar 11 en dan 12 enz. Als je een LED strip wil besturen moet je de juiste aantal opgeven en programmatisch besturen. Ik heb ooit een programma gemaakt met 350 RGB Leds met allemaal verschillende acties per deel van de strip. Tips: a) Zet de achtergrond consequent voor alle LEDS b) Vul de juiste waarden in voor de LEDs die een voorgrond kleur krijgen c) en pas aan het eind voer je show uit.

Bij 350 Leds, is de processing tijd rond de 6-8 milliseconden.

Hoi.

Als je alle LEDs uit wil hebben, moet je ze ook allemaal aanspreken, of je moet de spanning onderbreken. Om alle LEDs uit te zetten, zou je kunnen zeggen in je sketch dat er 500 LEDs aan hangen en vervolgend dat ze allemaal uit moeten. Dan word er dus een berg data uitgegooid, maar er word nooit gecontroleerd of die data ook aan komt (het is eenrichting verkeer voor de data). Dat zou je dan doen in het setup gedeelte. Daarna vertel je dan het werkelijke aantal (nog steeds in setup), en ga je dat aansturen. Das niet zo netjes om te doen maar vermoedelijk zal het wel werken. Enige nadeel hiervan is dat het ietsje langer duurt voor je sketch in het hoofdprogramma terecht komt.

nee mas3 dat gaat ook niey werken, want de led 11-20 zitten gewoon in de seriele lijn, en dus ontvangen zij iets, (van de vorige instelling van de leds 0 tot 10

als getal moet je daar gewoon het aantal dat aangesloten is vermelden, dat je er maar 10 wilt gebruiken kan want dan stuur je die aan en de rest stuur je aan met allemaal 0.

Daar heb je gelijk in. Ik heb de vraag niet goed begrepen. Dacht dat daar de oude waardes achter bleven, maar dat staat er niet. Hiermee verraad ik dat ik al wel heb bestudeerd hoe dit aan te sturen, maar het zelf nog niet gedaan heb. Heb wel een aantal ringen met in totaal iets van 180 LEDs die ik wil gaan aansturen, maar heb mezelf er nog niet toe kunnen zetten daar eens mee te gaan spelen. Word wel eens tijd als ik voor de kerst een versiering voor bij de boom wil maken.