This is a followup on my first post. I'm new to electronics and have only had my Uno for a few weeks.
For my first project, I'm doing custom lighting for my car. I plan to have an Arduino with a Bluetooth shield controlling an RGB LED strip in my front bumper. I'll be sending values for certain parameters (heat, intensity, hopefully speed, all in the 0-255 range) from an Android app I made (with Processing) that will run on my phone.
The code is somewhat processor intensive... it takes ~32mS for each iteration of loop()
on the Uno, although I think there's still some room for optimization.
I've been researching LED strips. I want a 60 LED/meter strip because that gives me about 40 pixels in the opening. A 30 LED/meter strip doesn't have enough pixel density. I'm familiar with the difference between 2801 (has a separate clock line) and 2811 (shared data+clock), but I'm seeing conflicting information about whether an Uno can drive a 2811, especially considering how heavy my code is. I can't decide whether to use a 5V or 12V strip, I'd like them the be as bight as possible so that they cast light in front of the car that's decently visible on the pavement at night (no, I won't be driving with them on).
I simply don't know what the most efficient/effective method is to drive them: hardware SPI (software SPI is probably out), I2C, shift registers, etc. With what I currently know, I'm inclined to get 2801's just to avoid the timing issues, but I suppose any method will work as long as the LEDs latch their values until the next iteration. Improvements to the SPI libraries related to 2811's seem rather recent (the last year or so).
I want to achieve an iteration time of 50mS total (20 FPS) or less, which I can then slow via delay
-like code using the speed value. Of course anything faster is a bonus. Or maybe I'm overthinking what needs to be done to send 120 bytes out to the strip for each frame. The limiting factor is the code that determines what those bytes are. I'm not totally married to the code, just to the effect it produces. If there's a faster code method I'm open to that too, such as cycling through Perlin noise, which according to some other threads here may be faster than what I'm doing.