Human Following Robot v2.0
Follow me Robot v2.0
Components and supplies
2
IR Transceiver (Generic)
1
Battery Holder, 18650 x 2
4
Maker Essentials - Micro-motors & Grippy Wheels
1
L293D motor driver Adafruit
1
Arduino UNO
1
SG90 Micro-servo motor
4
DC Motor, 12 V
1
Jumper wires (generic)
2
18650 cells
1
Ultrasonic Sensor - HC-SR04 (Generic)
Tools and machines
1
Hot glue gun (generic)
1
Multitool, Screwdriver
Apps and platforms
1
Arduino IDE
Project description
Code
Code
arduino
1//https://www.youtube.com/channel/UCaXI2PcsTlH5g0et67kdD6g // 2// Human Following Robot version 2.0 // 3// MOHD SOHAIL // 4 5#include<Servo.h> 6#include<AFMotor.h> 7#define RIGHT A2 8#define LEFT A3 9#define trigpin A4 10#define echopin A5 11 12AF_DCMotor Motor1(1,MOTOR12_1KHZ); 13AF_DCMotor Motor2(2,MOTOR12_1KHZ); 14AF_DCMotor Motor3(3,MOTOR34_1KHZ); 15AF_DCMotor Motor4(4,MOTOR34_1KHZ); 16 17Servo myservo; 18 19int pos =0; 20long time; 21 22void setup(){ 23// put your setup code here, to run once: 24Serial.begin(9600); 25myservo.attach(10); 26 27for(pos = 90; pos <= 160; pos += 1){ 28myservo.write(pos); 29delay(15); 30} 31 32for(pos = 160; pos >= 0; pos-= 1) { 33myservo.write(pos); 34delay(15); 35} 36 37for(pos = 0; pos<=90; pos += 1) { 38myservo.write(pos); 39delay(15); 40} 41 42pinMode(RIGHT, INPUT); 43pinMode(LEFT, INPUT); 44 45pinMode(trigpin, OUTPUT); 46pinMode(echopin, INPUT); 47 48} 49 50void loop(){ 51unsigned int distance = read_cm(); 52 53int Right_Value = digitalRead(RIGHT); 54int Left_Value = digitalRead(LEFT); 55 56Serial.print("R= "); 57Serial.print(Right_Value); 58Serial.print(" L= "); 59Serial.print(Left_Value); 60Serial.print(" D= "); 61Serial.println(distance); 62 63if((Right_Value==1) && (distance>=10 && distance<=30)&&(Left_Value==1)){forword();} 64else if((Right_Value==0) && (Left_Value==1)){turnRight();} 65else if((Right_Value==1) && (Left_Value==0)){turnLeft();} 66else if((Right_Value==1) && (Left_Value==1)){stop();} 67else if(distance > 6 && distance < 10){stop();} 68else if(distance < 6){backword();} 69 70delay(50); 71} 72 73long read_cm(){ 74 digitalWrite(trigpin, LOW); 75 delayMicroseconds(2); 76 digitalWrite(trigpin, HIGH); 77 delayMicroseconds(10); 78 time = pulseIn (echopin, HIGH); 79 return time / 29 / 2; 80} 81 82void forword(){// turn it on going forward 83Motor1.setSpeed(120); 84Motor1.run(FORWARD); 85Motor2.setSpeed(120); 86Motor2.run(FORWARD); 87Motor3.setSpeed(120); 88Motor3.run(FORWARD); 89Motor4.setSpeed(120); 90Motor4.run(FORWARD); 91} 92 93void backword(){ // the other way 94Motor1.setSpeed(100); 95Motor1.run(BACKWARD); 96Motor2.setSpeed(100); 97Motor2.run(BACKWARD); 98Motor3.setSpeed(100); 99Motor3.run(BACKWARD); 100Motor4.setSpeed(100); 101Motor4.run(BACKWARD); 102} 103 104void turnRight(){ // the other right 105Motor1.setSpeed(200); 106Motor1.run(FORWARD); 107Motor2.setSpeed(200); 108Motor2.run(FORWARD); 109Motor3.setSpeed(100); 110Motor3.run(BACKWARD); 111Motor4.setSpeed(100); 112Motor4.run(BACKWARD); 113} 114 115void turnLeft(){ // turn it on going left 116Motor1.setSpeed(100); 117Motor1.run(BACKWARD); 118Motor2.setSpeed(100); 119Motor2.run(BACKWARD); 120Motor3.setSpeed(200); 121Motor3.run(FORWARD); 122Motor4.setSpeed(200); 123Motor4.run(FORWARD); 124} 125 126void stop(){ // stopped 127Motor1.setSpeed(0); 128Motor1.run(RELEASE); 129Motor2.setSpeed(0); 130Motor2.run(RELEASE); 131Motor3.setSpeed(0); 132Motor3.run(RELEASE); 133Motor4.setSpeed(0); 134Motor4.run(RELEASE); 135} 136
Code
arduino
1//https://www.youtube.com/channel/UCaXI2PcsTlH5g0et67kdD6g // 2// Human Following Robot version 2.0 // 3// MOHD SOHAIL // 4 5#include<Servo.h> 6#include<AFMotor.h> 7#define RIGHT A2 8#define LEFT A3 9#define trigpin A4 10#define echopin A5 11 12AF_DCMotor Motor1(1,MOTOR12_1KHZ); 13AF_DCMotor Motor2(2,MOTOR12_1KHZ); 14AF_DCMotor Motor3(3,MOTOR34_1KHZ); 15AF_DCMotor Motor4(4,MOTOR34_1KHZ); 16 17Servo myservo; 18 19int pos =0; 20long time; 21 22void setup(){ 23// put your setup code here, to run once: 24Serial.begin(9600); 25myservo.attach(10); 26 27for(pos = 90; pos <= 160; pos += 1){ 28myservo.write(pos); 29delay(15); 30} 31 32for(pos = 160; pos >= 0; pos-= 1) { 33myservo.write(pos); 34delay(15); 35} 36 37for(pos = 0; pos<=90; pos += 1) { 38myservo.write(pos); 39delay(15); 40} 41 42pinMode(RIGHT, INPUT); 43pinMode(LEFT, INPUT); 44 45pinMode(trigpin, OUTPUT); 46pinMode(echopin, INPUT); 47 48} 49 50void loop(){ 51unsigned int distance = read_cm(); 52 53int Right_Value = digitalRead(RIGHT); 54int Left_Value = digitalRead(LEFT); 55 56Serial.print("R= "); 57Serial.print(Right_Value); 58Serial.print(" L= "); 59Serial.print(Left_Value); 60Serial.print(" D= "); 61Serial.println(distance); 62 63if((Right_Value==1) && (distance>=10 && distance<=30)&&(Left_Value==1)){forword();} 64else if((Right_Value==0) && (Left_Value==1)){turnRight();} 65else if((Right_Value==1) && (Left_Value==0)){turnLeft();} 66else if((Right_Value==1) && (Left_Value==1)){stop();} 67else if(distance > 6 && distance < 10){stop();} 68else if(distance < 6){backword();} 69 70delay(50); 71} 72 73long read_cm(){ 74 digitalWrite(trigpin, LOW); 75 delayMicroseconds(2); 76 digitalWrite(trigpin, HIGH); 77 delayMicroseconds(10); 78 time = pulseIn (echopin, HIGH); 79 return time / 29 / 2; 80} 81 82void forword(){// turn it on going forward 83Motor1.setSpeed(120); 84Motor1.run(FORWARD); 85Motor2.setSpeed(120); 86Motor2.run(FORWARD); 87Motor3.setSpeed(120); 88Motor3.run(FORWARD); 89Motor4.setSpeed(120); 90Motor4.run(FORWARD); 91} 92 93void backword(){ // the other way 94Motor1.setSpeed(100); 95Motor1.run(BACKWARD); 96Motor2.setSpeed(100); 97Motor2.run(BACKWARD); 98Motor3.setSpeed(100); 99Motor3.run(BACKWARD); 100Motor4.setSpeed(100); 101Motor4.run(BACKWARD); 102} 103 104void turnRight(){ // the other right 105Motor1.setSpeed(200); 106Motor1.run(FORWARD); 107Motor2.setSpeed(200); 108Motor2.run(FORWARD); 109Motor3.setSpeed(100); 110Motor3.run(BACKWARD); 111Motor4.setSpeed(100); 112Motor4.run(BACKWARD); 113} 114 115void turnLeft(){ // turn it on going left 116Motor1.setSpeed(100); 117Motor1.run(BACKWARD); 118Motor2.setSpeed(100); 119Motor2.run(BACKWARD); 120Motor3.setSpeed(200); 121Motor3.run(FORWARD); 122Motor4.setSpeed(200); 123Motor4.run(FORWARD); 124} 125 126void stop(){ // stopped 127Motor1.setSpeed(0); 128Motor1.run(RELEASE); 129Motor2.setSpeed(0); 130Motor2.run(RELEASE); 131Motor3.setSpeed(0); 132Motor3.run(RELEASE); 133Motor4.setSpeed(0); 134Motor4.run(RELEASE); 135} 136
Downloadable files
Circuit Diagram
Circuit Diagram

Comments
Only logged in users can leave comments