# Lesson 41--Microduino Dc Motor Rotation Control

 Language: English  • 中文

## Objective

This tutorial will teach you use a simple way to achieve the forward and backward rotation of a dc motor.

## Schematic

Note: This isn't one of the most safe method to control the motor, because each I/O pin only can carry 40mA current. If as a practical application, recommend using H-Bridge motor driver board.

## Program

```int motorPin1 =  5;    // Motor's one end connects to digital pin 5
int motorPin2 =  6;    // The other end connects to digital pin 6

void setup()   {
//Initialization, set these two pins as output
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
}

void loop()
{
rotateLeft(150, 500);//Left rotate, speed=150, lasts 500ms
rotateRight(50, 1000);//Right rotate, speed=50, lasts 1000ms
rotateRight(150, 1000);//Right rotate, speed=150, lasts 1000ms
rotateRight(200, 1000);//Right rotate, speed=200, lasts 1000ms
rotateLeft(255, 500);//Left rotate, speed=255, lasts 500ms
rotateRight(10, 1500);//Right rotate, speed=10, lasts 1500ms
}

//Turn left
void rotateLeft(int speedOfRotate, int length){
analogWrite(motorPin1, speedOfRotate); //Use pwm to set the current
digitalWrite(motorPin2, LOW);    // Set motorPin2 to LOW
delay(length); //waits
digitalWrite(motorPin1, LOW);    // Set motorPin1 to LOW
}
//Trun right
void rotateRight(int speedOfRotate, int length){
analogWrite(motorPin2, speedOfRotate); //Use pwm to set the current
digitalWrite(motorPin1, LOW);    // Set motorPin1 to LOW
delay(length); //waits
digitalWrite(motorPin2, LOW);    // Set motorPin2 to LOW
}

//Full speed turn left
void rotateLeftFull(int length){
digitalWrite(motorPin1, HIGH); //Set max current
digitalWrite(motorPin2, LOW);    // Set motorPin2 to LOW
delay(length); //waits
digitalWrite(motorPin1, LOW);    // Set motorPin1 to LOW
}
//Full speed turn right
void rotateRightFull(int length){
digitalWrite(motorPin2, HIGH); //Set max current
digitalWrite(motorPin1, LOW);    // Set motorPin1 to LOW
delay(length); //waits
digitalWrite(motorPin2, LOW);    // Set motorPin2 to LOW
}```

## Debug

Step 1: Copy the code to IDE and compile it

Step 2: Set up circuit, as follows:

Step 3: Run program

Step 4: Check the rotation of motor

## Result

Motor will rotate forward and backward with different speed and in circle.