Regarding the off-topic part (I won't go into detail)
The capacitor between the power leads will protect the Neopixels controller from sudden voltage changes due to the fact that each pixel drives their leds with PWM.
The resistor terminates the communication lines which reduces reflections in the wires.
Both improve performance and reduce risk of damage to the pixels. Hence you should use them. Just make sure you use them on the correct pins. There's plenty of information online on how to properly control Neopixel strings.
(I should note that I see many suggestions placing a resistor in front
of the LED strip and a capacitor on the power supply - will this
affect intensity?)
This will not affect intensity! Intensity is only controlled by the pixels' pwm signal and the supplied current.
Programming-wise:
As I understand the Neopixel library, maximum light intensity has a
value of 255.
Yes brightness is controlled by 3 values, red, green and blue each ranging from 0 (off) to 255 (max brightness). It's the duty cycle of the led's color channel.
This gives you a brightness resolution of 256 values over the entire brightness range. (8 bit).
My question is therefore if you know of any way to create a more
smooth fade?
This causes a problem. If you want to operate in a lower brightness range you only have a very limited number of steps to fade through.
So what if we reduce the current that supplies the leds?
As control and led supply voltage are usually supplied through the same rail there is no way to dim the entire strip while keeping the 8-bit resolution.
To control the fading time alter the delay time between each value update. Keep in mind the limited dynamic and persistence of human vision. Any visible brightness change that happens < 30Hz will cause a noticable step.
Below is my code so far. Note that I have had to insert specific lines
at the bottom to actually turn off the leds, as setting the intensity
to "0" apparently doesn't seem to do the trick - am I missing
something here?
for (j = High_Intensity; j > 1; j--)
In the loop that darkens the strip you run the loop while j > 1
. So the last brightness value you set is 2
which obviously isn't 0
.
for (j = High_Intensity; j > -1; j--)
should do the trick.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…