This is a project from 2015.
I have an RGB LED strip in my dorm room. It came with a controller/remote pair that has 16 color options and a few fading/flashing options. I thought it would be cool to control this strip via Arduino, so I looked for an online tutorial and found this one.
The LED strip runs on 12V and can pull a few amps, meaning that it cannot be directly powered by the Arduino. Instead, we can use transistors controlled by the Arduino. I used three IRF3710 MOSFETs to control the red, green, and blue channels. At first, I had ordered IRLZ34N MOSFETs on eBay. I had trouble getting them to work, and only after a lot of troubleshooting I found out that what I received in the mail was a different model MOSFET with a higher gate threshold voltage. The analogWrite() Arduino function is used to output a pulse width modulation (PWM) square wave to the gate terminal of each MOSFET. By adjusting the duty cycle from 0% to 100%, we can adjust how often the LED is on and therefore adjust its perceived brightness.
I set up a working circuit on a breadboard, then designed a board using EAGLE. The schematic file can be downloaded here and the board file can be downloaded here.
Using GA Tech's MRDC Electronics Lab, I was able to get a board milled out.
Here it is after soldering most of the components on:
It currently is programmed to cycle slowly through the rainbow. However in the future I would like to get it connected to a computer so that the color and brightness can be remotely controlled.
There are a few more things I would like to fix. First, I would like to change the power connector to a normal DC barrell jack. The current connector disconnects a lot easier. Second, since I am using an Arduino, the PWM output has 8-bit duty cycle control (0-255). For this application, in my opinion this doesn't allow for enough precision in LED brightness. I did some research and found the Texas Instruments TLC5940. This inexpensive chip has 12-bit duty control (0-4095) which is 16 times the precision of the Arduino, and 16 channels which is much more than the 3 that I need. In January I got this chip to work on a breadboard. In the next version of this LED control board I hope to use the TLC5940 to get much smoother color changing abilities.