RC Car Circuit
Using L293D Motor Driver
Build a full 4-Wheel Drive RC car using Arduino UNO and two L293D H-Bridge ICs — independently controlling all four DC gear motors for forward, backward, left, right, and stop.
Project Overview
What You Can Build Next
This RC car circuit is the foundation for more advanced robotics projects:
Bluetooth RC Car
Add HC-05 module for wireless smartphone control
Obstacle Avoiding Robot
Add ultrasonic sensor for autonomous navigation
Line Follower Robot
Add IR sensors to follow a line on the floor
IoT Smart Car
Add ESP8266 for Wi-Fi and internet control
Components Required
Circuit Diagram & Connections
Dashed lines = signal/power connections · All GND pins share a common ground
| Component | IC / Pin | Arduino Pin | Function |
|---|---|---|---|
| L293D #1 (Left) | IN1 | D2 | Left Front Motor — direction A |
| L293D #1 (Left) | IN2 | D3 | Left Front Motor — direction B |
| L293D #1 (Left) | IN3 | D4 | Left Rear Motor — direction A |
| L293D #1 (Left) | IN4 | D5 | Left Rear Motor — direction B |
| L293D #1 (Left) | EN1, EN2 | 5V | Always enabled (or PWM pin) |
| L293D #1 (Left) | Vcc1 | 5V | Logic supply |
| L293D #1 (Left) | Vcc2 | 6–9V EXT | Motor power supply |
| L293D #1 (Left) | GND (×4) | Common GND | Heat-sink + logic ground |
| L293D #2 (Right) | IN1 | D6 | Right Front Motor — direction A |
| L293D #2 (Right) | IN2 | D7 | Right Front Motor — direction B |
| L293D #2 (Right) | IN3 | D8 | Right Rear Motor — direction A |
| L293D #2 (Right) | IN4 | D9 | Right Rear Motor — direction B |
| L293D #2 (Right) | EN1, EN2 | 5V | Always enabled (or PWM pin) |
| L293D #2 (Right) | Vcc1 | 5V | Logic supply |
| L293D #2 (Right) | Vcc2 | 6–9V EXT | Motor power supply |
| L293D #2 (Right) | GND (×4) | Common GND | Heat-sink + logic ground |
Import this diagram.json into Fritzing, Wokwi, or your own schematic tool to auto-wire the circuit.
{
"version": 1,
"project": "4WD RC Car Using L293D Motor Driver",
"author": "MakeMindz",
"url": "https://www.makemindz.com/2026/01/arduino-rc-car-circuit-using-l293d.html",
"simulation": "https://www.tinkercad.com/things/bg61k18u50b-bluetooth-rc-car-four-wheel",
"parts": [
{ "id": "arduino", "type": "Arduino UNO R3" },
{ "id": "ic1", "type": "L293D Motor Driver IC", "label": "Left Side IC" },
{ "id": "ic2", "type": "L293D Motor Driver IC", "label": "Right Side IC" },
{ "id": "motor_lf", "type": "DC Gear Motor", "label": "Left Front Motor" },
{ "id": "motor_lr", "type": "DC Gear Motor", "label": "Left Rear Motor" },
{ "id": "motor_rf", "type": "DC Gear Motor", "label": "Right Front Motor" },
{ "id": "motor_rr", "type": "DC Gear Motor", "label": "Right Rear Motor" },
{ "id": "psu", "type": "Power Supply 6-9V", "label": "Motor Power Supply" }
],
"connections": [
{ "from": "ic1.IN1", "to": "arduino.D2", "note": "Left Front direction A" },
{ "from": "ic1.IN2", "to": "arduino.D3", "note": "Left Front direction B" },
{ "from": "ic1.IN3", "to": "arduino.D4", "note": "Left Rear direction A" },
{ "from": "ic1.IN4", "to": "arduino.D5", "note": "Left Rear direction B" },
{ "from": "ic1.EN1", "to": "arduino.5V", "note": "Enable Left Front (or PWM)" },
{ "from": "ic1.EN2", "to": "arduino.5V", "note": "Enable Left Rear (or PWM)" },
{ "from": "ic1.Vcc1", "to": "arduino.5V", "note": "Logic supply" },
{ "from": "ic1.Vcc2", "to": "psu.positive","note": "Motor supply 6-9V" },
{ "from": "ic1.GND", "to": "arduino.GND", "note": "Common ground" },
{ "from": "ic1.OUT1", "to": "motor_lf.A" },
{ "from": "ic1.OUT2", "to": "motor_lf.B" },
{ "from": "ic1.OUT3", "to": "motor_lr.A" },
{ "from": "ic1.OUT4", "to": "motor_lr.B" },
{ "from": "ic2.IN1", "to": "arduino.D6", "note": "Right Front direction A" },
{ "from": "ic2.IN2", "to": "arduino.D7", "note": "Right Front direction B" },
{ "from": "ic2.IN3", "to": "arduino.D8", "note": "Right Rear direction A" },
{ "from": "ic2.IN4", "to": "arduino.D9", "note": "Right Rear direction B" },
{ "from": "ic2.EN1", "to": "arduino.5V", "note": "Enable Right Front (or PWM)" },
{ "from": "ic2.EN2", "to": "arduino.5V", "note": "Enable Right Rear (or PWM)" },
{ "from": "ic2.Vcc1", "to": "arduino.5V", "note": "Logic supply" },
{ "from": "ic2.Vcc2", "to": "psu.positive","note": "Motor supply 6-9V" },
{ "from": "ic2.GND", "to": "arduino.GND", "note": "Common ground" },
{ "from": "ic2.OUT1", "to": "motor_rf.A" },
{ "from": "ic2.OUT2", "to": "motor_rf.B" },
{ "from": "ic2.OUT3", "to": "motor_rr.A" },
{ "from": "ic2.OUT4", "to": "motor_rr.B" },
{ "from": "psu.negative", "to": "arduino.GND", "note": "CRITICAL: Common ground" }
]
}
How the L293D H-Bridge Works
The L293D is a dual H-Bridge motor driver IC. By setting input pins HIGH or LOW, you control which direction current flows through the motor — and therefore which direction it spins.
Motor Forward ▶
Current flows in positive direction
Motor Reverse ◀
Current flows in reverse direction
Motor Stop ⏹
No current — motor brakes/coasts
Speed Control
PWM on EN pins adjusts motor speed
Step-by-Step Instructions
Set Up the Power Rails on Breadboard
Before placing ICs, set up power distribution on your breadboard. Two power rails are needed: 5V for IC logic and 6–9V external for motor power.
- Connect Arduino 5V → breadboard positive rail (logic)
- Connect Arduino GND → breadboard negative rail
- Connect external 6–9V supply positive → separate rail
- Connect external supply GND → same GND rail as Arduino
Place L293D #1 — Left Side Motors
Insert IC #1 straddling the breadboard center channel. Wire the left front and left rear motors to outputs, and control pins to Arduino.
- IC Vcc1 (pin 16) → 5V · Vcc2 (pin 8) → 6–9V external
- GND pins (4, 5, 12, 13) → GND rail
- EN1 (pin 1) → 5V (always on) · EN2 (pin 9) → 5V
- IN1 (pin 2) → D2 · IN2 (pin 7) → D3
- IN3 (pin 10) → D4 · IN4 (pin 15) → D5
- OUT1 + OUT2 → Left Front Motor terminals
- OUT3 + OUT4 → Left Rear Motor terminals
Place L293D #2 — Right Side Motors
Insert IC #2 on a separate section of the breadboard and wire the right front and right rear motors.
- Same power wiring as IC #1 (Vcc1 → 5V, Vcc2 → external)
- IN1 (pin 2) → D6 · IN2 (pin 7) → D7
- IN3 (pin 10) → D8 · IN4 (pin 15) → D9
- OUT1 + OUT2 → Right Front Motor terminals
- OUT3 + OUT4 → Right Rear Motor terminals
Upload the Arduino Code
Open Arduino IDE, paste the code below, and upload to your UNO. The loop runs the car through all movements automatically for testing.
// 4WD RC Car — L293D Motor Driver | MakeMindz.com // L293D #1 — Left Side (LF = Left Front, LR = Left Rear) int LF1 = 2, LF2 = 3; int LR1 = 4, LR2 = 5; // L293D #2 — Right Side (RF = Right Front, RR = Right Rear) int RF1 = 6, RF2 = 7; int RR1 = 8, RR2 = 9; void setup() { int pins[] = {LF1, LF2, LR1, LR2, RF1, RF2, RR1, RR2}; for (int i = 0; i < 8; i++) pinMode(pins[i], OUTPUT); } void forward() { digitalWrite(LF1, HIGH); digitalWrite(LF2, LOW); digitalWrite(LR1, HIGH); digitalWrite(LR2, LOW); digitalWrite(RF1, HIGH); digitalWrite(RF2, LOW); digitalWrite(RR1, HIGH); digitalWrite(RR2, LOW); } void backward() { digitalWrite(LF1, LOW); digitalWrite(LF2, HIGH); digitalWrite(LR1, LOW); digitalWrite(LR2, HIGH); digitalWrite(RF1, LOW); digitalWrite(RF2, HIGH); digitalWrite(RR1, LOW); digitalWrite(RR2, HIGH); } void turnLeft() { // Left wheels reverse, Right wheels forward digitalWrite(LF1, LOW); digitalWrite(LF2, HIGH); digitalWrite(LR1, LOW); digitalWrite(LR2, HIGH); digitalWrite(RF1, HIGH); digitalWrite(RF2, LOW); digitalWrite(RR1, HIGH); digitalWrite(RR2, LOW); } void turnRight() { // Left wheels forward, Right wheels reverse digitalWrite(LF1, HIGH); digitalWrite(LF2, LOW); digitalWrite(LR1, HIGH); digitalWrite(LR2, LOW); digitalWrite(RF1, LOW); digitalWrite(RF2, HIGH); digitalWrite(RR1, LOW); digitalWrite(RR2, HIGH); } void stopCar() { digitalWrite(LF1, LOW); digitalWrite(LF2, LOW); digitalWrite(LR1, LOW); digitalWrite(LR2, LOW); digitalWrite(RF1, LOW); digitalWrite(RF2, LOW); digitalWrite(RR1, LOW); digitalWrite(RR2, LOW); } void loop() { forward(); delay(3000); // Go forward 3s turnLeft(); delay(2000); // Turn left 2s turnRight();delay(2000); // Turn right 2s backward(); delay(3000); // Go backward 3s stopCar(); delay(2000); // Stop 2s }
Test in Tinkercad First
Open the Tinkercad simulation and run it before building physically. Watch how each function changes the motor directions in the simulation.
Test on Physical Hardware
Power the Arduino via USB and the motors via external 6–9V. Lift the car off the ground and run the demo loop — all 4 wheels should respond correctly.
- If a motor runs backwards, swap its two output wires (OUT1 ↔ OUT2)
- If motors are weak, increase external voltage (within 9V max for L293D)
- For speed control, replace EN1/EN2 5V connections with PWM pins (3, 5, 6, 9, 10, 11)
Movement Logic Summary
| Action | Left Front | Left Rear | Right Front | Right Rear |
|---|---|---|---|---|
| ▶ Forward | Forward | Forward | Forward | Forward |
| ◀ Backward | Reverse | Reverse | Reverse | Reverse |
| ↰ Turn Left | Reverse | Reverse | Forward | Forward |
| ↱ Turn Right | Forward | Forward | Reverse | Reverse |
| ⏹ Stop | OFF | OFF | OFF | OFF |
Tinkercad Simulation
Try the Full Simulation Online
No components needed — open the Tinkercad circuit, start the simulation, and watch all 4 motors respond to the movement functions in real time.
▶ Open Tinkercad Simulation ⬇ Download project filesLearning Outcomes
H-Bridge Control
Understanding how H-bridge circuits reverse motor polarity
Direction Logic
HIGH/LOW input combinations for directional control
Multi-Motor Coordination
Synchronising 4 independent motors for 4WD movement
Chassis Principles
Differential steering — turning by reversing one side
Real-World Robotics
Foundation for Bluetooth cars, obstacle avoiders, and more
Comments
Post a Comment