0% found this document useful (0 votes)
13 views3 pages

Line Follower and BT Robot - Ino

The document contains Arduino code for controlling a robot using Bluetooth and infrared sensors. It defines motor control functions for moving forward, backward, turning left, and turning right, as well as handling commands from a Bluetooth serial connection. The robot can operate in manual mode via Bluetooth commands or in automatic mode as a line follower based on sensor input.

Uploaded by

ayushsakpal58
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views3 pages

Line Follower and BT Robot - Ino

The document contains Arduino code for controlling a robot using Bluetooth and infrared sensors. It defines motor control functions for moving forward, backward, turning left, and turning right, as well as handling commands from a Bluetooth serial connection. The robot can operate in manual mode via Bluetooth commands or in automatic mode as a line follower based on sensor input.

Uploaded by

ayushsakpal58
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

#include <SoftwareSerial.

h>
SoftwareSerial BT_Serial(2, 3); // RX, TX

#define enA 10//Enable1 L298 Pin enA


#define in1 9 //Motor1 L298 Pin in1
#define in2 8 //Motor1 L298 Pin in1
#define in3 7 //Motor2 L298 Pin in1
#define in4 6 //Motor2 L298 Pin in1
#define enB 5 //Enable2 L298 Pin enB

#define R_S A0 //ir sensor Right


#define L_S A1 //ir sensor Left

int bt_data; // variable to receive data from the serial port


int Speed = 130;

int mode=0;

void setup(){ // put your setup code here, to run once

pinMode(R_S, INPUT); // declare if sensor as input


pinMode(L_S, INPUT); // declare ir sensor as input

pinMode(enA, OUTPUT); // declare as output for L298 Pin enA


pinMode(in1, OUTPUT); // declare as output for L298 Pin in1
pinMode(in2, OUTPUT); // declare as output for L298 Pin in2
pinMode(in3, OUTPUT); // declare as output for L298 Pin in3
pinMode(in4, OUTPUT); // declare as output for L298 Pin in4
pinMode(enB, OUTPUT); // declare as output for L298 Pin enB

Serial.begin(9600); // start serial communication at 9600bps


BT_Serial.begin(9600);
delay(500);
}

void loop(){

if(BT_Serial.available() > 0){ //if some date is sent, reads it and saves in state
bt_data = BT_Serial.read();
if(bt_data > 20){Speed = bt_data;}
}

if(bt_data == 8){mode=1; Speed=130;} //Auto Line Follower Command


else if(bt_data == 9){mode=0; Stop();} //Manual Android Application Control
Command

analogWrite(enA, Speed); // Write The Duty Cycle 0 to 255 Enable Pin A for Motor1
Speed
analogWrite(enB, Speed); // Write The Duty Cycle 0 to 255 Enable Pin B for Motor2
Speed

if(mode==0){
//===============================================================================
// Key Control Command
//===============================================================================
if(bt_data == 1){forword(); } // if the bt_data is '1' the DC motor will go
forward
else if(bt_data == 2){backword();} // if the bt_data is '2' the motor will Reverse
else if(bt_data == 3){turnLeft();} // if the bt_data is '3' the motor will turn
left
else if(bt_data == 4){turnRight();} // if the bt_data is '4' the motor will turn
right
else if(bt_data == 5){Stop(); } // if the bt_data '5' the motor will Stop

//===============================================================================
// Voice Control Command
//===============================================================================
else if(bt_data == 6){turnLeft(); delay(400); bt_data = 5;}
else if(bt_data == 7){turnRight(); delay(400); bt_data = 5;}
}else{
//===============================================================================
// Line Follower Control
//===============================================================================
if((digitalRead(R_S) == 0)&&(digitalRead(L_S) == 0)){forword();} //if Right Sensor
and Left Sensor are at White color then it will call forword function
if((digitalRead(R_S) == 1)&&(digitalRead(L_S) == 0)){turnRight();}//if Right Sensor
is Black and Left Sensor is White then it will call turn Right function
if((digitalRead(R_S) == 0)&&(digitalRead(L_S) == 1)){turnLeft();} //if Right Sensor
is White and Left Sensor is Black then it will call turn Left function
if((digitalRead(R_S) == 1)&&(digitalRead(L_S) == 1)){Stop();} //if Right Sensor
and Left Sensor are at Black color then it will call Stop function
}

delay(10);
}

void forword(){ //forword


digitalWrite(in1, HIGH); //Right Motor forword Pin
digitalWrite(in2, LOW); //Right Motor backword Pin
digitalWrite(in3, LOW); //Left Motor backword Pin
digitalWrite(in4, HIGH); //Left Motor forword Pin
}

void backword(){ //backword


digitalWrite(in1, LOW); //Right Motor forword Pin
digitalWrite(in2, HIGH); //Right Motor backword Pin
digitalWrite(in3, HIGH); //Left Motor backword Pin
digitalWrite(in4, LOW); //Left Motor forword Pin
}

void turnRight(){ //turnRight


digitalWrite(in1, LOW); //Right Motor forword Pin
digitalWrite(in2, HIGH); //Right Motor backword Pin
digitalWrite(in3, LOW); //Left Motor backword Pin
digitalWrite(in4, HIGH); //Left Motor forword Pin
}

void turnLeft(){ //turnLeft


digitalWrite(in1, HIGH); //Right Motor forword Pin
digitalWrite(in2, LOW); //Right Motor backword Pin
digitalWrite(in3, HIGH); //Left Motor backword Pin
digitalWrite(in4, LOW); //Left Motor forword Pin
}

void Stop(){ //stop


digitalWrite(in1, LOW); //Right Motor forword Pin
digitalWrite(in2, LOW); //Right Motor backword Pin
digitalWrite(in3, LOW); //Left Motor backword Pin
digitalWrite(in4, LOW); //Left Motor forword Pin
}

You might also like