The N-Drive Shield gives your Arduino the ability to drive up to six individual DC loads such as LEDs, DC motors and solenoids at up to a maximum of 60V / 20A per channel (with adequate cooling) using N-channel MOSFETs.

Safety First!

This shield is not suitable for switching mains level voltages.

It is possible to miswire the NDrive Shield in ways that create a lot of heat and potentially start a fire or burn you! Don't power up anything you're not sure about.

Hardware Setup

1. Fit the NDrive Shield to your Arduino. The shield includes extended “R3” headers, but it is also compatible with older Arduino models without the new SCL, SDA, and IOREF pins. If you do not need these pins you can cut them off if they get in the way, as they are not used by the shield.

2. Connect the loads you wish to switch on and off via the NDrive Shield. The screw terminals provide 6 outlets for the “Drain” connections of the MOSFETs. Each channel is controlled by a single digital pin (3, 5, 6, 9, 10, 11) and is marked on the shield.

Connect each load as follows:

For inductive loads (such as motors or solenoids), you will also need a flyback diode to protect the circuit.

Software Setup

The six output channels on the N-Drive Shield are connect to 6 digital outputs on your Arduino. The outputs are biased off by default, and can be turned on by driving the matching output HIGH.

Digital Control

Even a simple example such as Blink can be used simply by changing the pin. This slightly modified version of Blink allows you to easily change the selected output to test your N-Drive Shield:

int output_pin = 3;

void setup() {
  pinMode(output_pin, OUTPUT);

void loop() {
  digitalWrite(output_pin, HIGH); // turn the output on (HIGH is the voltage level)
  delay(1000);                    // wait for a second
  digitalWrite(output_pin, LOW);  // turn the output off by making the voltage LOW
  delay(1000);                    // wait for a second

Open the Arduino IDE, and either open an existing example (such as File -> Examples -> 01.Basics -> Blink) and modify it to suit, or create a new sketch and paste in the code above. Compile and upload it to your Arduino.

The status LEDs on the N-Drive Shield provide handy visual feedback even when you don't have any loads connected, making it very easy to check that your program is doing the right thing.

PWM (Analog) Control

The specific pins have been selected because they support PWM (Pulse Width Modulation) on typical Arduino boards, which allows you to drive loads partially on. This is perfect for high-power LEDs, particularly RGB LEDs.

The "Fading" example included with the Arduino IDE is perfect for testing this functionality. Open File -> Examples -> 02.Analog -> Fading, upload it to your Arduino, and watch the result on the status LED.