I finally built a new RGBW version into a portable case, with initial code. It tested fine on USB, but then I plugged a 12v power pack into it (instead of 5 volt) and I killed it. I should get the Trinket Pro this week, and then I'll replace the controller and pixels. I already have the TFT display (and I'm glad I decided to use plug jumpers and header pins on that interface!). This project will be the centerpiece for one of the talks during our event.
Updates sketch, for the Trinket 3v 12 MHz. The TFT display doesn't overwrite characters with a blank background, so I use "fillRect" to black-out over the previous color values, then write the new values. These functions necessitate an added delay so you can read the new values, and that makes the update timing on changes to the slider-pots feel a bit sluggish. A faster CPU would help. Perhaps I should have used a Teensy.
This is hidden, once the unit is assembled. The FTDI-friend cables inside needed some hot glue, since power and ground cables are no longer locked in the connector.
1×
Trinket Pro 3v (12 MHz)
The project needs 5 Analog ports to read the slider potentiometers, and a lot of I/O pins for the TFT display.
1×
ILI 9341 color TFT display
The TFT display signals must be 3.3v! It is NOT 5v-compatible, which forced the use of a 3.3v MCU.
5×
8212 NeoPixels
I have five built into the unit, and a 3-pin 0.1"-center connector for adding a longer strip to the pixel chain
1×
110-ohm 1/4 wattt resistor
Current limiter for the LED backlight on the TFT display.
1×
4" female-to-female 6-pin 0.1" cable
Used to extend the 6-pin programming header through the case wall, so you can use an FTDI-Friend cable for programming without opening the case. I used a MaceTech ShiftBrite cable assembly.
This Color Tuner was a follow-on to my original NeoPixel tuner. The first was for RGB, because that's all we had. When RGBW strips appeared, I wanted to build a new tuner. The fifth potentiometer is to set the "brightness" value of the library.
The TFT displays were an impulse by from PJRC.com, when I bought a few Teensy MCUs. The case was from small hand tools, and the case was deep enough for adding a rotary encoder as a menuing device.
I made the acrylic faceplates at Techshop exactly one year ago, got the basic code working, and then put it aside. I picked it up again in March 2018, so I could show it off to a couple grade 9 classes I am mentoring. I finished the wiring for external power, and tested with a bench supply. But, in my rush to pack it up to take to class, I grabbed a 12v power pack that had found it's way into my 5v bin. I checked the jack for fit first, and when it fit I plugged it in... ZAP! There wend the display and the Trinket! :-(
I've replaced the display and MCU, and re-assembled the case. While testing with the FTDI-friend cable, I found that three of the 6 connectors on the header going through the case wall were loose, and would push back into the case instead of holding the header pins. The solution was to apply a bit of hot glue to the wires inside the case, near the connector (but not ON IT), and that has improved the reliability of the connection.
I was able to update the sketch. It feels a bit slow (about 1 second between reading the set of potentiometers and updating the display. (I had to add some delay so the readings last long enough for you to read them. :-)
I added velcro to the case handle, and use that to hold the 5v power pack (now well-labeled), and I'm ready to work on new RGBW color libraries for my projects, and for show & tell at Arduino Day 2018!
I'm using it with NeoPixels, but you can adapt the idea for other shift-register-based pixel strips with minimal changes.