As an off-season project, our team designed and built a general-purpose LED controller. Connected to the roboRio (or in our case the navX) this allows us to control an RGB LED string, our ring-lights, and our targeting flashlight (sorry, "photon canon") via 5 PWM ports.
The parts are all available from
Adafruit:
5
N-channel power MOSFET
1
5v voltage regulator
1
Perma-proto quarter-size breadboard
2
4-pin terminal blocks
1
2-pin terminal block
1
5-pin terminal block
The wiring diagram follows:
Finally, the terminal connections (other than 12v power) are:
- Flashlight ground
- Flashlight power
- Ringlight ground
- Ringlight power
- -
- RGB Strip common (power)
- RGB Strip blue
- RGB Strip red
- RGB Strip green
- -
- PWM signal for flashlight
- PWM signal for ringlight
- PWM signal for RGB blue channel
- PWM signal for RGB red channel
- PWM signal for RGB green channel
We used this to drive a 5v LED flashlight and a
12v LED ringlight and two
12v LED RGB strips from
SuperBrightLeds.
Full Java code to interface with this controller is available in our
LEDController class, but ultimately each LED is driven by a single PWM channel, so you can easily control this with any language.
We further combined 3 LEDControllers into our
LEDStrip class to allow controlling the net color output of the strip more easily.
For the ringlight and flashlight, we used
LEDSwitch to provide simple on/off control.
We hope other teams find this useful!