Unfortunately, the way the strips work (e.g. they take data, then pass the rest down the rest of the strip) - there’s no way to say “Just update the 5th led in the strip”. That said, you could, in theory, only update from the beginning of the strip to the last changed led in the strip. However, doing this in a way that doesn’t end up hurting your performance more in the long term (by pushing out more updates than you should) and in a way that would work generically with FastLED (how should the library determine what the furthest changed led is, etc…) means that it’s not something that’s exposed by default.
That said, for advanced use/edge cases like this - you can get a hold of the underlying LED controller objects directly - see Multiple Controller Examples · FastLED/FastLED Wiki · GitHub - and then you can call show yourself, lying about how many leds to write out. e.g.
#include <FastLED.h>
#define NUM_LEDS 200
CRGB leds[NUM_LEDS];
void setup() { FastLED.addLeds<NEOPIXEL,5>(leds, NUM_LEDS); }
void loop() {
leds[10] = CRGB::Red;
FastLED[0].show(leds, 11, FastLED.getBrightness());
}
doing this you need to manage whether dithering is enabled yourself (because FastLED.show() is what does the timing checks to toggle dithering off if you are under 100 fps) and you will also need to do power management yourself. And of course you need to manage what leds have been changed, to determine how far into the strip needs to be written on a given frame. For that matter, you will want to disable dithering if you do this, because otherwise, dithering won’t be running on the leds after the last changed one, so you should just disable it entirely.
Because you’re creating a situation where every frame you write out might have different timing, you may end up seeing things like your frame rate becoming variable, which you’ll also want/need to account for.
Personally, i’ve found that in the real world, a significant portion of my animation frames involve animating leds near the end of the strip, and so I think most of the time/frame rate savings that would come from this is more theoretical than not, at the cost of some extra code complexity/juggling and less deterministic frame rates.