I am making a POV RGB LED Globe that plays animations on its surface. Currently I am using a Arduino Mega 2560 with 256k of Flash Memory. My program and the boot loader take up 20k of memory leaving me with 236k.
There are 64 RGB LEDs using 8 bits of brightness that change color 64 times a revolution. $\left( 64 \cdot 64 \cdot 3 \cdot 8 \right) \div 1024 = 12\mbox{ kB}$ == 12288 BYTES
Each frame of animation takes up 12288 BYTES (12k) of memory. That only leaves me with 19 Frames of animation. Good but not great, at 10 frames a sec thats only 2 secs of animations. I was hoping for ~64 frames of animation or 768k RAM. (768+20=788k total)
I have tried a few load 'on the fly' and steaming methods (SD, Wireless) but they can't keep up with the data required while streaming the data to the LEDs. I am going to try using a simple compression method next but I don't have high hopes that the system will be able to uncompress the data while steaming the color information out to the LEDs.
I have currently tested 10 frames of animation using the Arduino Mega 2560 and it works. Kind of, there are still some bugs. But I don't really want to switch off an Arduino board if I can help it.
My questions are:
- Are there pre-built Arduino boards with more ram?
- Can I add RAM to an existing Arduino board?
- Suggest a different Dev board thats is VERY similar to the Arduino with a c++ compiler.
Thank you for your time.
Edit: I am using the "PROGMEM" keyword to store my animations in the Flash memory not the SRAM. http://www.arduino.cc/playground/Learning/Memory
$
signs to invoke LaTeX formatting. However, I'm missing the point where you need to multiply by three - Do you have 8 bits for each color of the RGB LEDs? \$\endgroup\$