I am trying to control an RGB LED strip with an Arduino. I have followed the tutorials in both of these websites:
Using MOSFETs: https://learn.adafruit.com/rgb-led-strips?view=all enter image description here
Using LED Amplifiers: http://www.instructables.com/id/LED-Strip-Controller-w-LED-Amp-Arduino/ enter image description here
I have tried both setups and none of them work for me. When I try the setup with the MOSFETs, I am able to control each color but the blue LEDs are dimmer than the red and green, and therefore I can't mix any colors with blue.

When I try the LED Amplifiers, I am not able to control any light at all. Only the blue LEDs light up but the red and green dont. Also the blue LEDs stay ON the whole time and the only way to turn them off is to disconnect them from the DC power source.

What am I doing wrong?

  • First of all, it's generally bad practice to have a wire with 5V that's black. Red is usually used in this scenario. Also, How dim are the blue LEDs? Not sure but you might have the terminals backwards and there might be enough voltage to trigger the breakdown voltage of the LEDs. Jul 30, 2014 at 16:42
  • For the blue dimmer than the others, you may simply need to adjust the baseline duty cycle to match them. Jul 30, 2014 at 17:04
  • In the first diagram, it looks like you are connecting a pin labeled "9V" to the +12V pin of the LED strip....that won't work.
    – Funkyguy
    Jul 30, 2014 at 21:14
  • @Funkyguy - that's the Vin pin, which would be whatever supply is used. Hopefully an external supply is being used, as indeed undervoltage would cause odd behavior, and the blue leds with the highest forward voltage would suffer first. Jul 30, 2014 at 21:37
  • 1
    If you are not too invested in your current hardware, I'd suggest the adafruit neopixel. It has thorough tutorials, simple implementation and is highly scalable. No connection to company/product, just a user. adafruit.com/products/1460
    – anthropomo
    Aug 10, 2014 at 13:21

4 Answers 4


For the mosfet circuit. Are you using an external power supply? The reason why you cannot mix any color might be due to the fact that you're not providing enough current to the led strip, so it just work fine when turning on each channel individually. Check the current the led strip draws (which usually is provided as amp per channel per meter) and use a power supply that can provide enough current for it.

From the adafuit page

Connect a 9-12V power supply to the Arduino so that Vin supplies the high voltage to the LED strip. If you want, you can also just use a separate wire that connects to a power supply that provides about +12V. Make sure to connect the ground of that supply to the ground of the Arduino/MOSFETs!


The LED strip with blue ones requires a higher current drive. Arduino output pins can drive only 20mA max(ideal). Try an external power source.

  • They do use an external power supply and a MOSFET. Also, an Uno can supply 40mA, not 20. Aug 10, 2014 at 14:14

From the drawings in that instructable, you need the Arduino ground and the 12 volt ground connected together - perhaps the line you have marked "+3v or 5v" should really be ground?

  • What you are saying is true. Butthe +3v or 5v shoudn't be ground. Connecting the Ground from the power supply to the Arduino should make things work alot better.
    – Handoko
    Oct 28, 2014 at 23:25

Your 12 strip probably puts each set of 3 LEDs in series. 3 Red LEDs take about 6V to be fully on, while 3 blue LEDs take about 9V; when you have 12v the resistors absorb the rest of the voltage drop (higher value resistors are needed for the red LEDs if you want about the same current in each color). Driving 3 in series is good - the same current travels through 3 LEDs producing 3 times as much light per amp than if each LED was separately driven. (Or from another perspective, with 3 in series the LEDs get 6-9v and thethe resistors and power amp need to drop the 3-6v from a 12v supply, versus a single LED dropping 2-3v and the resistors and power amp dropping the other 9-10v).

All is good, if you are driving each color with close to 12v.

BUT - your LED amplifier may expect more than 5v inputs in order to be fully on (eg: if it uses conventional FETs). Driving it with 5v may not fully turn on the LED driving transistors. In that case, the LEDs may be seeing less than 12V. The blue LEDs would be the first to suffer from this voltage sag.

Note that if this is the case, the LED amplifier may also overheat - the transistors dissipate more power when not fully on, which raises the temperatures, probably leading to shortened life at best, possibly release of the magic smoke that makes electronics work.

You can test this. Disconnect the Arduino. Connect the +12v to one of the inputs at a time. If that color is now fully bright, then you have shown that 12v input fully turns on the driving transistor, but 5v does not.

(If your LED amplifier says it's designed to be driven by 5v, do not do this test. Many of them however expect to be driven by the tail end of a previous strip, at roughly 12v)

An example of an LED amplifier which IS designed for 5v inputs: http://www.usledsupply.com/shop/rgb-mini-amplifier-ttl.html I have not used this device and am not recommending it, just using it as an example. Note that it appears that for this amplifier, you would connect the Arduino's +5 to the input (along with the PWM outputs from the Arduino), rather than ground - and the PWM sense would be reversed, with lower PWM values being brighter, because the amp would turn on when the output pin was low.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.