How to Make a Human Following Robot With Arduino

by David Adeboye in Circuits > Arduino

7269 Views, 12 Favorites, 0 Comments

How to Make a Human Following Robot With Arduino

Screenshot_20200618-101917.png
Human following robot sense and follows human

Get the Tools

Screenshot_20200618-101729.png
Screenshot_20200618-101450.png
Screenshot_20200618-101208.png
Screenshot_20200618-101406.png
Screenshot_20200618-101741.png
Screenshot_20200618-102357.png
Screenshot_20200618-102040.png
Screenshot_20200618-101512.png
Screenshot_20200618-101708.png
Screenshot_20200618-101633.png
Screenshot_20200618-101302.png
Screenshot_20200618-101937.png
Get the tools like :
Ultrasonic sensor
Sensor
Arduino uno
4 gear motors with wheel
Servo
Battery and battery case
Motor driver
Jumper wires
Chassis

Connecting

Screenshot_20200618-102033.png
Screenshot_20200618-101533.png
Screenshot_20200618-102033.png
Screenshot_20200618-101503.png
Connect every equipment to motor driver.
Connect motor driver to arduino.

Code

Screenshot_20200618-102331.png
#include
#include
#include
#define RIGHT A2
#define LEFT A3
#define TRIGGER_PIN A1
#define ECHO_PIN A0
#define MAX_DISTANCE 100


NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);


AF_DCMotor Motor1(1,MOTOR12_1KHZ);
AF_DCMotor Motor2(2,MOTOR12_1KHZ);
AF_DCMotor Motor3(3,MOTOR34_1KHZ);
AF_DCMotor Motor4(4,MOTOR34_1KHZ);

Servo myservo;

int pos =0;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
myservo.attach(10);
{
for(pos = 90; pos <= 180; pos += 1){
myservo.write(pos);
delay(15);
} for(pos = 180; pos >= 0; pos-= 1) {
myservo.write(pos);
delay(15);
}for(pos = 0; pos<=90; pos += 1) {
myservo.write(pos);
delay(15);
}
}
pinMode(RIGHT, INPUT);
pinMode(LEFT, INPUT);

}

void loop() {
// put your main code here, to run repeatedly:

delay(50);
unsigned int distance = sonar.ping_cm();
Serial.print("distance");
Serial.println(distance);


int Right_Value = digitalRead(RIGHT);
int Left_Value = digitalRead(LEFT);

Serial.print("RIGHT");
Serial.println(Right_Value);
Serial.print("LEFT");
Serial.println(Left_Value);

if((Right_Value==1) && (distance>=10 && distance<=30)&&(Left_Value==1)){
Motor1.setSpeed(120);
Motor1.run(FORWARD);
Motor2.setSpeed(120);
Motor2.run(FORWARD);
Motor3.setSpeed(120);
Motor3.run(FORWARD);
Motor4.setSpeed(120);
Motor4.run(FORWARD);
}else if((Right_Value==0) && (Left_Value==1)) {
Motor1.setSpeed(200);
Motor1.run(FORWARD);
Motor2.setSpeed(200);
Motor2.run(FORWARD);
Motor3.setSpeed(100);
Motor3.run(BACKWARD);
Motor4.setSpeed(100);
Motor4.run(BACKWARD);
}else if((Right_Value==1)&&(Left_Value==0)) {
Motor1.setSpeed(100);
Motor1.run(BACKWARD);
Motor2.setSpeed(100);
Motor2.run(BACKWARD);
Motor3.setSpeed(200);
Motor3.run(FORWARD);
Motor4.setSpeed(200);
Motor4.run(FORWARD);
}else if((Right_Value==1)&&(Left_Value==1)) {
Motor1.setSpeed(0);
Motor1.run(RELEASE);
Motor2.setSpeed(0);
Motor2.run(RELEASE);
Motor3.setSpeed(0);
Motor3.run(RELEASE);
Motor4.setSpeed(0);
Motor4.run(RELEASE);
}else if(distance > 1 && distance < 10) {
Motor1.setSpeed(0);
Motor1.run(RELEASE);
Motor2.setSpeed(0);
Motor2.run(RELEASE);
Motor3.setSpeed(0);
Motor3.run(RELEASE);
Motor4.setSpeed(0);
Motor4.run(RELEASE);
}
}