How to make Bluetooth Controlled Missile Launcher Vehicle






Click here and Download App 


            CODE 

 #include <Servo.h> // Servo library


char pn;


int l = 200;

int pos = 0;

int x = 170 ;  // Servo1 position

int y = 90; // Servo2 starts at home 90°

int mot_speed = l;


// === Motor pin definitions ===

// Left motor (Motor A)

int ENA = 6;    // PWM pin

int IN1 = 7;

int IN2 = 8;


// Right motor (Motor B)

int ENB = 3;    // PWM pin

int IN3 = 5;

int IN4 = 4;


// === Servo definitions ===

Servo myservo1, myservo2, myservo3;


// === Relay pins ===

int relay1 = 2;

int relay2 = 12;


// === For servo3 timing ===

unsigned long lastTurnTime = 0;

int servo3Pos = 90;


void setup() {

  // Motor setup

  pinMode(ENA, OUTPUT);

  pinMode(ENB, OUTPUT);

  pinMode(IN1, OUTPUT);

  pinMode(IN2, OUTPUT);

  pinMode(IN3, OUTPUT);

  pinMode(IN4, OUTPUT);


  // Servo setup

  myservo1.attach(9);

  myservo2.attach(10);

  myservo3.attach(11);


  // === Set home positions ===

  myservo1.write(180);   // Servo1 home = 180°

  myservo2.write(80);  // Servo2 home = 90°

  myservo3.write(90);  // Servo3 center


  // Relay setup

  pinMode(relay1, OUTPUT);

  pinMode(relay2, OUTPUT);

  digitalWrite(relay1, LOW);

  digitalWrite(relay2, LOW);


  // Serial monitor

  Serial.begin(9600);

  Serial.println("=== System Initialized ===");

  Serial.println("Servo1 Home = 0°");

  Serial.println("Servo2 Home = 90°");

  Serial.println("Servo3 Center = 90°");

  Serial.println("Ready for Commands...");

}


// === MOTOR CONTROL FUNCTIONS ===

void moveForward() {

  digitalWrite(IN1, HIGH);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, HIGH);

  digitalWrite(IN4, LOW);

  analogWrite(ENA, mot_speed);

  analogWrite(ENB, mot_speed);

  Serial.println("Moving Forward");

}


void moveBackward() {

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, HIGH);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, HIGH);

  analogWrite(ENA, mot_speed);

  analogWrite(ENB, mot_speed);

  Serial.println("Moving Backward");

}


void stopMotors() {

  digitalWrite(IN1, LOW);

  digitalWrite(IN2, LOW);

  digitalWrite(IN3, LOW);

  digitalWrite(IN4, LOW);

  Serial.println("Motors Stopped");

}


void loop() {

  // Read serial command

  if (Serial.available() > 0) {

    pn = Serial.read();

    Serial.print("Command: ");

    Serial.println(pn);

  }


  // ====== MOTOR BASIC CONTROLS ======

  if (pn == 'A') moveForward();  // Forward

  if (pn == 'B') moveBackward(); // Backward

  if (pn == 'Z') stopMotors();   // Stop


  // ====== SERVO 1 CONTROL ======

  if (pn == 'b') {

    if (x < 180) {

      x++;

      myservo1.write(x);

      Serial.print("Servo1: ");

      Serial.println(x);

      delay(30);

    }

  }


  if (pn == 'a') {

    if (x > 0) {

      x--;

      myservo1.write(x);

      Serial.print("Servo1: ");

      Serial.println(x);

      delay(30);

    }

  }


  // ====== SERVO 2 CONTROL ======

  if (pn == 'c') {

    if (y < 180) {

      y++;

      myservo2.write(y);

      Serial.print("Servo2: ");

      Serial.println(y);

      delay(30);

    }

  }


  if (pn == 'd') {

    if (y > 0) {

      y--;

      myservo2.write(y);

      Serial.print("Servo2: ");

      Serial.println(y);

      delay(30);

    }

  }


  // ====== SPEED CONTROL ======

  if (pn == 'm') l = 50;

  if (pn == 'n') l = 100;

  if (pn == 'o') l = 150;

  if (pn == 'p') l = 200;

  if (pn == 'q') l = 255;

  mot_speed = l;


  if (pn >= 'm' && pn <= 'q') {

    Serial.print("Motor Speed set to: ");

    Serial.println(mot_speed);

  }


  // ====== MOTOR + SERVO3 TURN CONTROL ======

  if (pn == 'C') {           

    myservo3.write(110);     // Turn left

    lastTurnTime = millis();

    Serial.println("Turning Left");

  }

  else if (pn == 'D') {

    myservo3.write(70);       // Turn right

    lastTurnTime = millis();

    Serial.println("Turning Right");

  }

  else {

    if (millis() - lastTurnTime > 500) {

      myservo3.write(90);

    }

  }


  // ====== RELAY CONTROL ======

  if (pn == 'X') {

    digitalWrite(relay1, LOW);

    Serial.println("Relay1 ON");

  } else  {

    digitalWrite(relay1, HIGH);

    Serial.println("Relay1 OFF");

  }


  if (pn == 'Y') {

    digitalWrite(relay2, LOW);

    Serial.println("Relay2 ON");

  } else  {

    digitalWrite(relay2, HIGH);

    Serial.println("Relay2 OFF");

  }


  delay(20);

}

Post a Comment

Previous Post Next Post

Contact Form