Arduino RC Car Circuit Using Arduino Uno and L293D (4WD Model)

RC Car Circuit Using L293D Motor Driver | MakeMindz
Robotics Arduino UNO L293D H-Bridge 4WD Tinkercad

RC Car Circuit
Using L293D Motor Driver

⏱ 60–90 min build ⚙️ Dual L293D ICs 🚗 4WD · 4 DC Motors 🔬 Tinkercad Simulation

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

🚗
Drive Type
4-Wheel Drive
⚙️
Motor Drivers
2× L293D IC
🔌
DC Motors
4 Gear Motors
🎮
Movements
5 Directions
Motor Supply
6–9V External

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

🤖
Arduino UNO ×1
Main microcontroller
⚙️
L293D Motor Driver IC ×2
Dual H-Bridge — controls 2 motors each
🔩
DC Gear Motors ×4
LF, LR, RF, RR wheels
🧱
Breadboard ×1
Full-size recommended
🔋
External Power Supply ×1
6–9V for motor Vcc2
🔌
Jumper Wires ×1 set
Male-to-male for breadboard

Circuit Diagram & Connections

Arduino UNO D6 → D7 → D8 → D9 → ← D2 ← D3 ← D4 ← D5 ← 5V ← GND 5V → GND→ L293D #1 LEFT SIDE MOTORS IN1 ← D2 IN2 ← D3 IN3 ← D4 IN4 ← D5 Vcc1 ← 5V Vcc2 ← 6-9V GND → Common EN1,EN2 → 5V L293D #2 RIGHT SIDE MOTORS IN1 ← D6 IN2 ← D7 IN3 ← D8 IN4 ← D9 Vcc1 ← 5V Vcc2 ← 6-9V GND → Common EN1,EN2 → 5V Left Front OUT1 & OUT2 Left Rear OUT3 & OUT4 Right Front OUT1 & OUT2 Right Rear OUT3 & OUT4 External Power 6–9V → Vcc2 of both ICs GND → Common Ground L293D #1 (Left) control L293D #2 (Right) control Motor output Motor power RC Car — L293D Circuit | MakeMindz.com

Dashed lines = signal/power connections · All GND pins share a common ground

ComponentIC / PinArduino PinFunction
L293D #1 (Left)IN1D2Left Front Motor — direction A
L293D #1 (Left)IN2D3Left Front Motor — direction B
L293D #1 (Left)IN3D4Left Rear Motor — direction A
L293D #1 (Left)IN4D5Left Rear Motor — direction B
L293D #1 (Left)EN1, EN25VAlways enabled (or PWM pin)
L293D #1 (Left)Vcc15VLogic supply
L293D #1 (Left)Vcc26–9V EXTMotor power supply
L293D #1 (Left)GND (×4)Common GNDHeat-sink + logic ground
L293D #2 (Right)IN1D6Right Front Motor — direction A
L293D #2 (Right)IN2D7Right Front Motor — direction B
L293D #2 (Right)IN3D8Right Rear Motor — direction A
L293D #2 (Right)IN4D9Right Rear Motor — direction B
L293D #2 (Right)EN1, EN25VAlways enabled (or PWM pin)
L293D #2 (Right)Vcc15VLogic supply
L293D #2 (Right)Vcc26–9V EXTMotor power supply
L293D #2 (Right)GND (×4)Common GNDHeat-sink + logic ground
⚠ Critical: Always connect a common GND between the Arduino and the external motor power supply. Without this, motors may behave erratically.

Import this diagram.json into Fritzing, Wokwi, or your own schematic tool to auto-wire the circuit.

JSON — diagram.json
{
  "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.

IN1=HIGH · IN2=LOW

Motor Forward ▶

Current flows in positive direction

IN1=LOW · IN2=HIGH

Motor Reverse ◀

Current flows in reverse direction

IN1=LOW · IN2=LOW

Motor Stop ⏹

No current — motor brakes/coasts

EN=PWM Signal

Speed Control

PWM on EN pins adjusts motor speed

Each L293D controls 2 motors. With 2 ICs, you get independent control over all 4 wheels — essential for differential steering (turning by running opposite sides at different speeds or directions).

Step-by-Step Instructions

01

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
⚠ Common Ground: External PSU and Arduino must share GND. This is the most common wiring mistake.
02

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
03

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
04

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.

C++ — Arduino Sketch
// 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
}
05

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.

Tip: In Tinkercad you can click on motor components during simulation to see current direction and speed. Great for verifying your logic before wiring real hardware.
06

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

ActionLeft FrontLeft RearRight FrontRight 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 files

Learning 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

More Arduino Projects