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);
}
https://github.com/PaulStoffregen/SoftwareSerial
-APP
https://play.google.com/store/apps/details?id=com.srituhobby


