I have not posted in a while so a little update is overdue.
After completing the first prototype I received some of the little SMD containers from Adafruit and labeled them. I also prepared a simple little PDF file with about 15 sheets outlining which components were to be installed next. While it still was not as fast as I’d hoped I was able to make 4 more prototypes in about 3 hours. Obviously there is still potential for optimization!
So far, so good. Meanwhile several people have voiced interest in purchasing the shield when it becomes available. A guesstimate is that currently about 75 shields are accounted for. We have requested an updated quote for 100 shields from our chosen manufacturer and we are waiting to receive it to determine the price. Once we have received it we will start a fundraiser on Tindie.com.
I also have not just been sitting around but have worked some on the library. The one thing the library is really missing is a good fading algorithm. For my LED lighting system I developed an adapted 3D Bresenham algorithm.
The original algorithm was developed when most computers did not have specialized hardware to support floating point operations but only integer. While calculating floating point was possible, it was very slow. (Anyone remember Fractint ?) Equivalently most Arduino compatible micro controllers do not support floating point operations using specialized CPU operations thus are very slow when compared to integer operations. The initial Bresenham algorithm was developed to draw a line across a rasterized computer screen and uses only integer math, thus is very fast. For a RGB fading algorithm a 3D version of that algorithm was needed and I found an implementation on the Internet that suited our needs. It had to be modified and taken apart to allow fading several RGB LEDs synchronously but it works very nicely. As I recently found out, depending on what Microcontroller it runs on it can also be blistering fast.
In my own projects I have moved away from the original Arduino’s and have toyed around with a Teensy3. It is a fraction of the size of an Arduino UNO, costs only $20, is US made and employs a Freescale Arm Cortex M4 processor running at up to 98MHz. The new I2C library recently written by user nox771 also better supports the faster I2C hardware on the Teensy3 and supports I2C bus speeds of up to 2.4MHz. Ohh…. I forgot to mention, when using Teensyduino a plugin for the Arduino IDE the Teensy3 is fully Arduino compatible and comes with many libraries that one would have to dig around quite a bit somewhere else to find.
The hardware on our shield supports FM+ mode so up to 1MHz bus speed.
At that bus frequency a complete fade from RGB(0, 0, 0) to RGB(255, 255, 255) using the CIElab lightness corrected library function takes 53 ms!