Example Code for Arduino-PWM Motor Control
Last revision 2025/12/26
Control the DC motor using PWM mode. Input "w", "s", "a", "d", "x", "z" to control the motor to move forward, backward, turn left, turn right, stop, etc.
Hardware Preparation
Software Preparation
- Download Arduino IDE: Click to download Arduino IDE
Wiring Diagram

Other Preparation Work
Applying the Motor Control Pin Jumpers will allocate Pin 5,6,7,8 for motor control. The motor driver circuit control terminal uses a short-jumper to set on or off. Set on when connected and off when disconnected.
Sample Code
//Standard PWM DC control
int E1 = 5; //M1 Speed Control
int E2 = 6; //M2 Speed Control
int M1 = 4; //M1 Direction Control
int M2 = 7; //M1 Direction Control
///For previous Romeo, please use these pins.
//int E1 = 6; //M1 Speed Control
//int E2 = 9; //M2 Speed Control
//int M1 = 7; //M1 Direction Control
//int M2 = 8; //M1 Direction Control
void stop(void) //Stop
{
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
}
void advance(char a,char b) //Move forward
{
analogWrite (E1,a); //PWM Speed Control
digitalWrite(M1,HIGH);
analogWrite (E2,b);
digitalWrite(M2,HIGH);
}
void back_off (char a,char b) //Move backward
{
analogWrite (E1,a);
digitalWrite(M1,LOW);
analogWrite (E2,b);
digitalWrite(M2,LOW);
}
void turn_L (char a,char b) //Turn Left
{
analogWrite (E1,a);
digitalWrite(M1,LOW);
analogWrite (E2,b);
digitalWrite(M2,HIGH);
}
void turn_R (char a,char b) //Turn Right
{
analogWrite (E1,a);
digitalWrite(M1,HIGH);
analogWrite (E2,b);
digitalWrite(M2,LOW);
}
void setup(void)
{
int i;
for(i=4;i<=7;i++)
pinMode(i, OUTPUT);
Serial.begin(115200); //Set Baud Rate
Serial.println("Run keyboard control");
}
void loop(void)
{
if(Serial.available()){
char val = Serial.read();
if(val != -1)
{
switch(val)
{
case 'w'://Move Forward
advance (255,255); //move forward in max speed
break;
case 's'://Move Backward
back_off (255,255); //move back in max speed
break;
case 'a'://Turn Left
turn_L (100,100);
break;
case 'd'://Turn Right
turn_R (100,100);
break;
case 'z':
Serial.println("Hello");
break;
case 'x':
stop();
break;
}
}
else stop();
}
}
Result
Input "w" to move forward in max speed, "s" to move backward in max speed, "a" to turn left, "d" to turn right, "x" to stop, "z" to print "Hello" in serial.
Additional Information
The motor driver circuit control terminal uses a short-jumper to set on or off. Set on when connected and off when disconnected.
Was this article helpful?
