Programming
// Bluetooth-Controlled Robot Car
// Arduino UNO + HC-05 + L298N
// L298N Motor Driver Pins
int ENA = 5; // Left motor speed
int IN1 = 8;
int IN2 = 9;
int ENB = 6; // Right motor speed
int IN3 = 10;
int IN4 = 11;
// HC-05 Bluetooth
// HC-05 TX -> Arduino pin 2
// HC-05 RX -> Arduino pin 3
#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(2, 3); // RX, TX
int motorSpeed = 200;
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Bluetooth.begin(9600);
Serial.begin(9600);
stopCar();
}
void loop() {
if (Bluetooth.available()) {
char command = Bluetooth.read();
Serial.println(command);
switch (command) {
case 'F':
forward();
break;
case 'B':
backward();
break;
case 'L':
left();
break;
case 'R':
right();
break;
case 'S':
stopCar();
break;
}
}
}
// Move Forward
void forward() {
analogWrite(ENA, motorSpeed);
analogWrite(ENB, motorSpeed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
// Move Backward
void backward() {
analogWrite(ENA, motorSpeed);
analogWrite(ENB, motorSpeed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
// Turn Left
void left() {
analogWrite(ENA, motorSpeed);
analogWrite(ENB, motorSpeed);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
// Turn Right
void right() {
analogWrite(ENA, motorSpeed);
analogWrite(ENB, motorSpeed);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
// Stop Robot
void stopCar() {
analogWrite(ENA, 0);
analogWrite(ENB, 0);
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}