Human Following Robot Using Arduino by Proteus
This Arduino robot has a sensor that can detect any object near it and can follow this object.
Components and supplies
1
SG90 Micro-servo motor
1
Battery Tester, 6V / 12V
4
DC Motor, 12 V
2
Dual H-Bridge motor drivers L293D
1
Arduino UNO
2
Ultrasonic Sensor - HC-SR04 (Generic)
1
IR Transceiver (Generic)
Project description
Code
code
c_cpp
Here is the project code
1//hrsajjad844 2 3#include<Servo.h> 4#include<AFMotor.h> 5#define LEFT A0 6#define echopin A1 // echo pin 7#define trigpin A2 // Trigger pin 8#define RIGHT A3 9 10AF_DCMotor Motor1(1,MOTOR12_1KHZ); 11AF_DCMotor Motor2(2,MOTOR12_1KHZ); 12AF_DCMotor Motor3(3,MOTOR34_1KHZ); 13AF_DCMotor Motor4(4,MOTOR34_1KHZ); 14 15Servo myservo; 16 17int pos =0; 18long time; 19 20void setup(){ 21 22Serial.begin(9600); 23myservo.attach(10); 24 25for(pos = 90; pos <= 180; pos += 1){ 26myservo.write(pos); 27delay(15); 28} 29 30for(pos = 180; pos >= 0; pos-= 1) { 31myservo.write(pos); 32delay(15); 33} 34 35for(pos = 0; pos<=90; pos += 1) { 36myservo.write(pos); 37delay(15); 38} 39 40pinMode(RIGHT, INPUT); 41pinMode(LEFT, INPUT); 42 43pinMode(trigpin, OUTPUT); 44pinMode(echopin, INPUT); 45 46} 47 48void loop(){ 49unsigned int distance = read_cm(); 50 51int Right_Value = digitalRead(RIGHT); 52int Left_Value = digitalRead(LEFT); 53 54Serial.print("R= "); 55Serial.print(Right_Value); 56Serial.print(" L= "); 57Serial.print(Left_Value); 58Serial.print(" D= "); 59Serial.println(distance); 60 61 if((Right_Value==1) && (distance>=10 && distance<=30)&&(Left_Value==1)){forword();} 62else if((Right_Value==0) && (Left_Value==1)){turnRight();} 63else if((Right_Value==1) && (Left_Value==0)){turnLeft();} 64else if((Right_Value==1) && (Left_Value==1)){stop();} 65else if(distance > 5 && distance < 10){stop();} 66else if(distance < 5){backword();} 67 68delay(50); 69} 70 71long read_cm(){ 72 digitalWrite(trigpin, LOW); 73 delayMicroseconds(2); 74 digitalWrite(trigpin, HIGH); 75 delayMicroseconds(10); 76 time = pulseIn (echopin, HIGH); 77 return time / 29 / 2; 78} 79 80void forword(){// turn it on going forward 81Motor1.setSpeed(120); 82Motor1.run(FORWARD); 83Motor2.setSpeed(120); 84Motor2.run(FORWARD); 85Motor3.setSpeed(120); 86Motor3.run(FORWARD); 87Motor4.setSpeed(120); 88Motor4.run(FORWARD); 89} 90 91void backword(){ // the other way 92Motor1.setSpeed(120); 93Motor1.run(BACKWARD); 94Motor2.setSpeed(120); 95Motor2.run(BACKWARD); 96Motor3.setSpeed(120); 97Motor3.run(BACKWARD); 98Motor4.setSpeed(120); 99Motor4.run(BACKWARD); 100} 101 102void turnRight(){ // the other right 103Motor1.setSpeed(200); 104Motor1.run(FORWARD); 105Motor2.setSpeed(200); 106Motor2.run(FORWARD); 107Motor3.setSpeed(100); 108Motor3.run(BACKWARD); 109Motor4.setSpeed(100); 110Motor4.run(BACKWARD); 111} 112 113void turnLeft(){ // turn it on going left 114Motor1.setSpeed(100); 115Motor1.run(BACKWARD); 116Motor2.setSpeed(100); 117Motor2.run(BACKWARD); 118Motor3.setSpeed(200); 119Motor3.run(FORWARD); 120Motor4.setSpeed(200); 121Motor4.run(FORWARD); 122} 123 124void stop(){ // stopped 125Motor1.setSpeed(0); 126Motor1.run(RELEASE); 127Motor2.setSpeed(0); 128Motor2.run(RELEASE); 129Motor3.setSpeed(0); 130Motor3.run(RELEASE); 131Motor4.setSpeed(0); 132Motor4.run(RELEASE); 133} 134
code
c_cpp
Here is the project code
1//hrsajjad844 2 3#include<Servo.h> 4#include<AFMotor.h> 5#define 6 LEFT A0 7#define echopin A1 // echo pin 8#define trigpin A2 // Trigger pin 9#define 10 RIGHT A3 11 12AF_DCMotor Motor1(1,MOTOR12_1KHZ); 13AF_DCMotor Motor2(2,MOTOR12_1KHZ); 14AF_DCMotor 15 Motor3(3,MOTOR34_1KHZ); 16AF_DCMotor Motor4(4,MOTOR34_1KHZ); 17 18Servo myservo; 19 20 21int pos =0; 22long time; 23 24void setup(){ 25 26Serial.begin(9600); 27myservo.attach(10); 28 29for(pos 30 = 90; pos <= 180; pos += 1){ 31myservo.write(pos); 32delay(15); 33} 34 35for(pos 36 = 180; pos >= 0; pos-= 1) { 37myservo.write(pos); 38delay(15); 39} 40 41for(pos 42 = 0; pos<=90; pos += 1) { 43myservo.write(pos); 44delay(15); 45} 46 47pinMode(RIGHT, 48 INPUT); 49pinMode(LEFT, INPUT); 50 51pinMode(trigpin, OUTPUT); 52pinMode(echopin, 53 INPUT); 54 55} 56 57void loop(){ 58unsigned int distance = read_cm(); 59 60int 61 Right_Value = digitalRead(RIGHT); 62int Left_Value = digitalRead(LEFT); 63 64Serial.print("R= 65 "); 66Serial.print(Right_Value); 67Serial.print(" L= "); 68Serial.print(Left_Value); 69Serial.print(" 70 D= "); 71Serial.println(distance); 72 73 if((Right_Value==1) && (distance>=10 74 && distance<=30)&&(Left_Value==1)){forword();} 75else if((Right_Value==0) && (Left_Value==1)){turnRight();} 76else 77 if((Right_Value==1) && (Left_Value==0)){turnLeft();} 78else if((Right_Value==1) 79 && (Left_Value==1)){stop();} 80else if(distance > 5 && distance < 10){stop();} 81else 82 if(distance < 5){backword();} 83 84delay(50); 85} 86 87long read_cm(){ 88 89 digitalWrite(trigpin, LOW); 90 delayMicroseconds(2); 91 digitalWrite(trigpin, 92 HIGH); 93 delayMicroseconds(10); 94 time = pulseIn (echopin, HIGH); 95 return 96 time / 29 / 2; 97} 98 99void forword(){// turn it on going forward 100Motor1.setSpeed(120); 101Motor1.run(FORWARD); 102Motor2.setSpeed(120); 103Motor2.run(FORWARD); 104Motor3.setSpeed(120); 105Motor3.run(FORWARD); 106Motor4.setSpeed(120); 107Motor4.run(FORWARD); 108} 109 110void 111 backword(){ // the other way 112Motor1.setSpeed(120); 113Motor1.run(BACKWARD); 114Motor2.setSpeed(120); 115Motor2.run(BACKWARD); 116Motor3.setSpeed(120); 117Motor3.run(BACKWARD); 118 119Motor4.setSpeed(120); 120Motor4.run(BACKWARD); 121} 122 123void turnRight(){ 124 // the other right 125Motor1.setSpeed(200); 126Motor1.run(FORWARD); 127Motor2.setSpeed(200); 128Motor2.run(FORWARD); 129Motor3.setSpeed(100); 130Motor3.run(BACKWARD); 131Motor4.setSpeed(100); 132Motor4.run(BACKWARD); 133} 134 135void 136 turnLeft(){ // turn it on going left 137Motor1.setSpeed(100); 138Motor1.run(BACKWARD); 139Motor2.setSpeed(100); 140Motor2.run(BACKWARD); 141Motor3.setSpeed(200); 142Motor3.run(FORWARD); 143Motor4.setSpeed(200); 144Motor4.run(FORWARD); 145} 146 147void 148 stop(){ // stopped 149Motor1.setSpeed(0); 150Motor1.run(RELEASE); 151Motor2.setSpeed(0); 152Motor2.run(RELEASE); 153Motor3.setSpeed(0); 154Motor3.run(RELEASE); 155Motor4.setSpeed(0); 156Motor4.run(RELEASE); 157 158} 159
Downloadable files
Schematic design
Here is the project schematic design
Schematic design

Comments
Only logged in users can leave comments