# Can someone help me with my light effect?

I’m trying to create a light effect that will light up a path on the floor at night and move down the strip. I don’t want it to light up the entire strip (at least not full brightness), but for a few lights to run down the length of the strip kind of like the Scan effect.

The plan for this automation is to run a group of 3 LEDs from start to finish. Then once they’re far enough down, start another group. When the group has moved far enough then it will turn off the last LED that was on.

``````    - addressable_lambda:
name: 'Night Path'
update_interval: 35ms
lambda: |-
static auto TAG = 'NightPath';
static uint16_t progress = 0;
static auto green = Color(63, 228, 32);

if (progress < it.size()) {
it[progress] = green;
}

if (progress - 1 >= 0) {
it[progress - 1] = green;
}

if (progress - 2 >= 0) {
it[progress - 2] = green;
}

if (progress - 3 >= 0) {
it[progress - 3] = Color::BLACK;
}

if (progress % 6 == 0) {
static uint16_t progress6 = progress / 6;

if (progress6 < it.size()) {
it[progress6] = green;
}

if (progress6 - 1 >= 0) {
it[progress6 - 1] = green;
}

if (progress6 - 2 >= 0) {
it[progress6 - 2] = green;
}
}

if (progress < it.size()) {
progress++;
} else {
progress = 0;
}
``````

What this is doing is always leaving the first LED and the last two LEDs on. I also think it’s lighting up 4 instead of 3, but right now it’s so fast that it’s hard to tell for sure. It also isn’t running the second group and I’m not sure why. I have it set so that when the current value is divisible by 6 then the next group will run. So if the value of `progress` is 12 then 12, 11, and 10 should light up as well as 2, 1, and 0.