Example Code for DFRduino-Motor Control

Last revision 2026/01/26

Control two DC motors connected to the DFRduino Motor Shield via serial monitor commands ('a','s','w','d','x') to realize forward, backward, left turn, right turn, and stop functions. Users can learn how to use PWM for motor speed regulation and digital pins for direction control.

Hardware Preparation

Name Model/SKU Quantity Purchase Link
DFRduino Board DFR0216 1 DFRduino UNO R3
DFRobot Motor Shield DRI0001 1 DC Motor Driver Shield
DC Motor - 2 DFRobot DC Motors

Software Preparation

  • Development Tool: Arduino IDE (version 1.8.x or higher recommended)
  • Download Link: Arduino IDE Download
  • Installation Guide: Follow the official setup instructions for your operating system on the download page.
  • Library Requirements: No external libraries are needed for this sample code.

Wiring Diagram

接线图1
接线图2
连线图

Other Preparation Work

  1. Connect DC motors to the motor shield’s terminals: Motor 1 to M1+/M1-, Motor 2 to M2+/M2-.
  2. Upload the sample code to your DFRduino board using the Arduino IDE.
  3. Open the Arduino IDE Serial Monitor (set baud rate to 9600) to send control commands.

Sample Code

//This motor shield use Pin 6,5,7,4 to control the motor
// Simply connect your motors to M1+,M1-,M2+,M2-
// Upload the code to DFRduino
// Through serial monitor, type 'a','s', 'w','d','x' to control the motor
// www.dfrobot.com
// Last modified on 24/12/2009

int EN1 = 6;
int EN2 = 5;  //Roboduino Motor shield uses Pin 9
int IN1 = 7;
int IN2 = 4; //Latest version use pin 4 instead of pin 8

void Motor1(int pwm, boolean reverse) {
  analogWrite(EN1, pwm); //set pwm control, 0 for stop, and 255 for maximum speed
  if (reverse)  {
    digitalWrite(IN1, HIGH);
  }
  else  {
    digitalWrite(IN1, LOW);
  }
}

void Motor2(int pwm, boolean reverse) {
  analogWrite(EN2, pwm);
  if (reverse)  {
    digitalWrite(IN2, HIGH);
  }
  else  {
    digitalWrite(IN2, LOW);
  }
}

void setup() {
  int i;
  // for(i=6;i<=9;i++) //For Roboduino Motor Shield
  // pinMode(i, OUTPUT);  //set pin 6,7,8,9 to output mode

  for (i = 4; i <= 7; i++) //For DFRduino Motor Shield
    pinMode(i, OUTPUT);  //set pin 4,5,6,7 to output mode
  Serial.begin(9600);
}

void loop() {
  int x, delay_en;
  char val;
  while (1)  {
    val = Serial.read();
    if (val != -1)    {
      switch (val)      {
        case 'w'://Move ahead
          Motor1(100, true); //You can change the speed, such as Motor(50,true)
          Motor2(100, true);
          break;
        case 'x'://move back
          Motor1(100, false);
          Motor2(100, false);
          break;
        case 'a'://turn left
          Motor1(100, false);
          Motor2(100, true);
          break;
        case 'd'://turn right
          Motor1(100, true);
          Motor2(100, false);
          break;
        case 's'://stop
          Motor1(0, false);
          Motor2(0, false);
          break;
      }
    }
  }
}

The motor shield is powered directly from Arduino. It is strongly advised that use external power supply (on Arduino) to power the Arduino instead of the USB power supply.

Was this article helpful?

TOP