Introduction: Control 2 Motors With the L293DNE Dual Motor Driver IC and Arduino 101
This is a dual motor driver board using the L293DNE IC which is a quadruple half-H-bridge. It is used to run two motors at variable speeds controlled by the Arduino 101.
Step 1: Materials and Tools
- Arduino
- 2x DC Motor
- L239DNE IC
- Breadboard wires
- 6x Jumper Wires
- Breadboard
Step 2: Connecting the VCC Pins
Connect pins 1, 8, 9, 16 of the L293DNE IC all to 5V from the Arduino.
Step 3: Connecting the Ground Pins
Connect pins 4, 5, 12, 13 of the L293DNE IC to ground.
Step 4: Connecting the Signal Pins
Connect the following IC pins to the Arduino with the jumper wire colour in the images serving as a guide.
| L239DNE Pin | Arduino Pin | Jumper Wire Colour |
|---|---|---|
| 9 | D3 | Green |
| 6 | D5 | Brown |
| 5 | D6 | Blue |
| 3 | D9 | Red |
Step 5: Connecting the DC Motors
Connect the two leads of one DC motor to pins 3 and 6 of the L293DNE IC. And connect the second DC motor pins to pins 11 and 14 of the L293DNE IC.
Step 6: Coding and Uploading
Select the appropriate board under tools and it's corresponding port once connected. Then, upload the following code to the board.
//Motor A const int motorPin1 = 3; // Pin 14 of L293 const int motorPin2 = 5; // Pin 10 of L293 //Motor B const int motorPin3 = 6; // Pin 7 of L293 const int motorPin4 = 9; // Pin 2 of L293
//This will run only one time.
void setup(){
//Set pins as outputs
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
//Motor Control - Motor A: motorPin1,motorpin2 & Motor B: motorpin3,motorpin4}
void loop(){
//This code will turn Motor A clockwise for 2 sec.
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(2000);
//This code will turn Motor A counter-clockwise for 2 sec.
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(2000);
//This code will turn Motor B clockwise for 2 sec.
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(2000);
//This code will turn Motor B counter-clockwise for 2 sec.
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(2000);
//And this code will stop motors
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
}





