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



Other Preparation Work
- Connect DC motors to the motor shield’s terminals: Motor 1 to
M1+/M1-, Motor 2 toM2+/M2-. - Upload the sample code to your DFRduino board using the Arduino IDE.
- 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?
