I've been using a 50 LED WS2801 strip for about a week, trying to make a decorative light-up branch like the ones they sell around Christmas time. It was going great, but recently they've started to behave strangely.
I was in the middle of programming a new section of my visualizer when it happened. I currently had it programmed to turn on one segment of 12 LEDs, then the next segment, and so on (so I could map the LED indexes to where they are on the branch). When I wrote the next part of the program, I changed my switch statement variables to move to a new function, but after flashing the arduino uno, the strip was just frozen in the middle of its previous visualization. I tried the reset button; nothing. I unplugged it from USB and plugged it back in. This caused all the LEDs to reset, but this new section of my program was only turning on the first LED. I immediately switched to the library's example code (which has worked in the past for this strip and arduino), suspecting my program was at fault.
The result was that all of the LEDs turn on full white or off-white, but you can still see it trying to do the example visualizations. For example, in the "color chase" visualization, you can see it running through the LEDs, it's just that everything is mostly white. It's almost as if someone is adding 250 to each color value between the arduino and the strip.
- They have been working perfectly all week
- The LEDs themselves are not burned out because they are on full white
- My program is not at fault since the same behavior is displayed by the example which worked before
- I tried switching out the wires that connect the arduino to the strips (they are the short flexible ones you get in kits)
- I tried switching to my other arduino uno, same behavior
- The strip seems to still be able to address the LEDs since you can still sort of see the test visualizations
- The strip was powered by the arduino, and the manufacturer rates it for 5V
So what do you think? Did I somehow wreck the strip? Is it possible that unplugging power in the middle of a reset or an initialize could permanently damage the strip? I'm worried because this project is meant to be a gift for a very special person at the end of the month, and even though I could buy a replacement in time, I don't want to give a gift that will burn out after 5 hours of use.
Thank you in advance for your help.
I was messing around with the strip last night, trying to figure out what was wrong. I noticed that the lights only lit up full white if the strip object was given the proper number of LEDs- beyond the maximum they'd stay off. I kept trying different things, flashing new sketches, until suddenly, the strip started to behave normally again. When I went back to my original program, the strip didn't respond, but I found out it was because I was using large arrays and running out of memory. I think somehow, when my program ran out of memory, it did something to the strip that caused it to behave strangely for a while. So this issue is technically "solved" but I'm really curious as to how a malfunctioning program could affect the behavior of the LED strip across multiple flashes.