Skip to Content


DIY Control robot Car 4DW with Mobile using Arduino & Bluetooth



-CIRCUIT DIAGRAM


-CODE

/* Bluetooth Controlled Car with PWM Speed Control

   Board: Arduino Nano

   Bluetooth Module: HC-05 or HC-06

   RX = 10 , TX = 11

*/


#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11); // RX, TX


// Motor A

#define IN1 2

#define IN2 3

#define ENA 6   // PWM pin for motor A


// Motor B

#define IN3 4

#define IN4 5

#define ENB 9   // PWM pin for motor B


int speedValue = 150; // Default speed (0–255)


void setup() {

  BT.begin(9600);

  Serial.begin(9600);


  pinMode(IN1, OUTPUT);

  pinMode(IN2, OUTPUT);

  pinMode(IN3, OUTPUT);

  pinMode(IN4, OUTPUT);

  pinMode(ENA, OUTPUT);

  pinMode(ENB, OUTPUT);

}


void loop() {

  if (BT.available() > 0) {

    char value = BT.read();

    Serial.println(value);


    if (value == 'U') Forward();

    else if (value == 'D') Backward();

    else if (value == 'S') Stop();

    else if (value == 'R') Left();

    else if (value == 'L') Right();


    // Speed control commands

    else if (value == '+') increaseSpeed();

    else if (value == '-') decreaseSpeed();

  }

}


void Forward() {

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

  analogWrite(ENA, speedValue);

  analogWrite(ENB, speedValue);

}


void Backward() {

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

  analogWrite(ENA, speedValue);

  analogWrite(ENB, speedValue);

}


void Stop() {

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

  analogWrite(ENA, 0);

  analogWrite(ENB, 0);

}


void Left() {

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

  analogWrite(ENA, speedValue);

  analogWrite(ENB, speedValue);

}


void Right() {

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

  analogWrite(ENA, speedValue);

  analogWrite(ENB, speedValue);

}


// Increase or decrease speed using '+' or '-' from Bluetooth app

void increaseSpeed() {

  speedValue += 25;

  if (speedValue > 255) speedValue = 255;

  Serial.print("Speed: ");

  Serial.println(speedValue);

}


void decreaseSpeed() {

  speedValue -= 25;

  if (speedValue < 0) speedValue = 0;

  Serial.print("Speed: ");

  Serial.println(speedValue);

}


-LIBRARY
https://github.com/PaulStoffregen/SoftwareSerial

-APP
https://play.google.com/store/apps/details?id=com.srituhobby