07/12/2025
বানিয়ে ফেলেছি একটি Android App ও একটি স্মার্ট Robot Car. ( ♥️ Machine learning )
Code :- 👇
BluetoothSerial SerialBT;
// Servo objects
Servo servoPan;
Servo servoTilt;
// ==================== পিন ডেফিনিশন ====================
LEFT_IN1 13
LEFT_IN2 14
LEFT_IN3 16
LEFT_IN4 17
RIGHT_IN1 18
RIGHT_IN2 19
RIGHT_IN3 25
RIGHT_IN4 26
SERVO_PAN 27
SERVO_TILT 33
LED_CONTROL 4
SWITCH1 21
SWITCH2 22
BLINK_LED 23
// Bluetooth
String inputString = "";
bool stringComplete = false;
// Blink system
unsigned long previousMillis = 0;
const long blinkInterval = 1500;
void setup() {
Serial.begin(115200);
SerialBT.begin("RobotCar_BT");
Serial.println("\n===============================");
Serial.println(" Bluetooth Robot Car Started");
Serial.println(" Pair with: RobotCar_BT");
Serial.println("===============================\n");
// মোটরের পিন
pinMode(LEFT_IN1, OUTPUT); pinMode(LEFT_IN2, OUTPUT);
pinMode(LEFT_IN3, OUTPUT); pinMode(LEFT_IN4, OUTPUT);
pinMode(RIGHT_IN1, OUTPUT); pinMode(RIGHT_IN2, OUTPUT);
pinMode(RIGHT_IN3, OUTPUT); pinMode(RIGHT_IN4, OUTPUT);
// সার্ভো সেটিং (MG995 best setup)
servoPan.setPeriodHertz(333);
servoTilt.setPeriodHertz(333);
servoPan.attach(SERVO_PAN, 520, 2420);
servoTilt.attach(SERVO_TILT, 520, 2420);
servoPan.write(90);
servoTilt.write(80);
// LED & Switch
pinMode(LED_CONTROL, OUTPUT);
pinMode(SWITCH1, OUTPUT);
pinMode(SWITCH2, OUTPUT);
pinMode(BLINK_LED, OUTPUT);
digitalWrite(LED_CONTROL, LOW);
digitalWrite(SWITCH1, LOW);
digitalWrite(SWITCH2, LOW);
inputString.reserve(50);
}
void loop() {
// ==================== BLINK LED ====================
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= blinkInterval) {
previousMillis = currentMillis;
digitalWrite(BLINK_LED, HIGH);
delay(50);
digitalWrite(BLINK_LED, LOW);
}
// ==================== BLUETOOTH DATA RECEIVE ====================
while (SerialBT.available()) {
char inChar = (char)SerialBT.read();
if (inChar == '\n') {
stringComplete = true;
} else {
inputString += inChar;
}
}
// ==================== PROCESS COMMAND ====================
if (stringComplete) {
inputString.trim();
inputString.replace("\r", ""); // CR থাকলে রিমুভ
Serial.print("[CMD] Received → ");
Serial.println(inputString);
// ========== MOVEMENT ==========
if (inputString == "1") { Serial.println("→ FORWARD"); moveForward(); }
else if (inputString == "2") { Serial.println("→ BACKWARD"); moveBackward(); }
else if (inputString == "3") { Serial.println("→ LEFT"); turnLeft(); }
else if (inputString == "4") { Serial.println("→ RIGHT"); turnRight(); }
else if (inputString == "0") { Serial.println("→ STOP"); stopCar(); }
// ========== SERVO PAN ==========
else if (inputString.startsWith("P")) {
int v = inputString.substring(1).toInt();
v = constrain(v, 0, 180);
servoPan.write(v);
Serial.printf("→ PAN = %d°\n", v);
}
// ========== SERVO TILT ==========
else if (inputString.startsWith("T")) {
int v = inputString.substring(1).toInt();
v = constrain(v, 40, 120);
servoTilt.write(v);
Serial.printf("→ TILT = %d°\n", v);
}
// ========== LED ==========
else if (inputString == "L1") { digitalWrite(LED_CONTROL, HIGH); Serial.println("→ LED ON"); }
else if (inputString == "L0") { digitalWrite(LED_CONTROL, LOW); Serial.println("→ LED OFF"); }
// ========== SWITCH 1 ==========
else if (inputString == "S1") { digitalWrite(SWITCH1, HIGH); Serial.println("→ SWITCH1 ON"); }
else if (inputString == "S0") { digitalWrite(SWITCH1, LOW); Serial.println("→ SWITCH1 OFF"); }
// ========== SWITCH 2 ==========
else if (inputString == "M1") { digitalWrite(SWITCH2, HIGH); Serial.println("→ SWITCH2 ON"); }
else if (inputString == "M0") { digitalWrite(SWITCH2, LOW); Serial.println("→ SWITCH2 OFF"); }
else {
Serial.println("⚠ Unknown Command!");
}
inputString = "";
stringComplete = false;
}
}
// ==================== মোটর ফাংশন ====================
void moveForward() {
digitalWrite(LEFT_IN1,HIGH); digitalWrite(LEFT_IN2,LOW);
digitalWrite(LEFT_IN3,HIGH); digitalWrite(LEFT_IN4,LOW);
digitalWrite(RIGHT_IN1,HIGH); digitalWrite(RIGHT_IN2,LOW);
digitalWrite(RIGHT_IN3,HIGH); digitalWrite(RIGHT_IN4,LOW);
}
void moveBackward() {
digitalWrite(LEFT_IN1,LOW); digitalWrite(LEFT_IN2,HIGH);
digitalWrite(LEFT_IN3,LOW); digitalWrite(LEFT_IN4,HIGH);
digitalWrite(RIGHT_IN1,LOW); digitalWrite(RIGHT_IN2,HIGH);
digitalWrite(RIGHT_IN3,LOW); digitalWrite(RIGHT_IN4,HIGH);
}
void turnLeft() {
digitalWrite(LEFT_IN1,LOW); digitalWrite(LEFT_IN2,HIGH);
digitalWrite(LEFT_IN3,LOW); digitalWrite(LEFT_IN4,HIGH);
digitalWrite(RIGHT_IN1,HIGH); digitalWrite(RIGHT_IN2,LOW);
digitalWrite(RIGHT_IN3,HIGH); digitalWrite(RIGHT_IN4,LOW);
}
void turnRight() {
digitalWrite(LEFT_IN1,HIGH); digitalWrite(LEFT_IN2,LOW);
digitalWrite(LEFT_IN3,HIGH); digitalWrite(LEFT_IN4,LOW);
digitalWrite(RIGHT_IN1,LOW); digitalWrite(RIGHT_IN2,HIGH);
digitalWrite(RIGHT_IN3,LOW); digitalWrite(RIGHT_IN4,HIGH);
}
void stopCar() {
digitalWrite(LEFT_IN1,LOW); digitalWrite(LEFT_IN2,LOW);
digitalWrite(LEFT_IN3,LOW); digitalWrite(LEFT_IN4,LOW);
digitalWrite(RIGHT_IN1,LOW); digitalWrite(RIGHT_IN2,LOW);
digitalWrite(RIGHT_IN3,LOW); digitalWrite(RIGHT_IN4,LOW);
}