The lamp drivers I have been making for ILOVELAMP are very simple carriers for the following:
- Arduino Pro Micro
- Power jack
- LED output jack
- Various sensor inputs (knobs,etc)
I chose a Pro Micro because I wanted a 5V microcontroller that had: a decent amount of I/O, analog inputs, pin change interrupts on most pins, I2C/SPI, easy to program / built-in USB, and good support with FastLED. The ATmega32U4-based "Pro Micro" is fits most all these and you can get a 5-pack from Amazon for $27. I don't need or want BLE or WiFi yet (or potentially ever) and didn't want to deal with the hassle of 3v3 to 5V conversion for WS2812s.
The first two of these lamp driver boards I made explicitly had mounting for standard rotary encoder knob inputs. I love rotary encoders and thought they could be a good input method for the lamps. After using them for a few weeks, I think there are much better alternatives.
One obvious alternative is potentiometers. So the current board I designed and am using is a smaller version with pots instead encoders and has the ability to drive two LED strips more easily.
Here is the layout of the previous board and the new board.
I'm still keeping the traces exceedingly thick to make Othermill milling and soldering faster and less error-prone.
Here's the new board milled and populated.
A trick with the Othermill: try to always do a single-sided board. If you can't get single-sided to work, perhaps you can get away with a handful of "traces" on the other side that you then wire as jumpers. That's what this new board has for the pot wipers. Notice the three white wires on the top of the PCB. These are the "bottom" traces (colored blue) in the board layout above.
Another Othermill trick: put your traces on your "top copper" layer and your through-hole components on the "bottom" of your PCB. Yes, you can mill the bottom of boards, but it's easier to think of the main copper layer as the top, even though with through-hole components it'll be on the other side.