mohammadsohail0008
Published © GPL3+

Cute Bot

Cute Obstacle Avoider Bot

IntermediateFull instructions provided451
Cute Bot

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Ultrasonic Sensor - HC-SR04 (Generic)
Ultrasonic Sensor - HC-SR04 (Generic)
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×1
Development Board, Motor Control Shield
Development Board, Motor Control Shield
×1
LED (generic)
LED (generic)
×2
DC Motor, 12 V
DC Motor, 12 V
×2
Maker Essentials - Micro-motors & Grippy Wheels
Pimoroni Maker Essentials - Micro-motors & Grippy Wheels
×2
Jumper wires (generic)
Jumper wires (generic)
×1
Centre wheel
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Multitool, Screwdriver
Multitool, Screwdriver

Story

Read more

Schematics

Circuit

Code

Code

Arduino
#include <AFMotor.h> 
#include <Servo.h>    
#include <NewPing.h>

Servo servo;
NewPing sonar(A0, A1, 1000);
AF_DCMotor leftMotor(2, MOTOR12_8KHZ); 
AF_DCMotor rightMotor(1, MOTOR12_8KHZ); 

int pos = 0; 
int dist = 0;
int leftdist = 0;
int rightdist = 0;
int c = 0;

int leftred= 0;
int rightred=1;

void setup() {
  Serial.begin(115200);
  servo.attach(7);  
  servo.write(70);
  moveFront();

  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);
}

void loop() {
  dist = readPing();
  if (dist<20) {
    moveBack();
    delay(500);
    rightdist = lookRight();
    delay(1000);
    leftdist = lookLeft();
    delay(1000);
    if (leftdist >= rightdist){
      moveLeft();
    }else{
      moveRight();
    }
  }
  moveFront();
}

int readPing() {
  delay(70);
  unsigned int uS = sonar.ping();
  int cm = uS/US_ROUNDTRIP_CM;
  return cm;
}

void moveFront() {
    leftMotor.run(FORWARD);
    rightMotor.run(FORWARD);
    for (c = 0; c < 150; c +=2) {
      leftMotor.setSpeed(c);
      rightMotor.setSpeed(c);

     }
    delay(300);
}

void moveBack() {
    leftMotor.run(BACKWARD);
    rightMotor.run(BACKWARD);
 
    delay(200);
}  

void moveRight() {
  leftMotor.run(FORWARD);
  rightMotor.run(BACKWARD);

  delay(300);
}

void moveLeft() {
  leftMotor.run(BACKWARD);
  rightMotor.run(FORWARD);

  delay(300);
}  

void moveStop() {
  leftMotor.run(RELEASE);
  rightMotor.run(RELEASE);
  
  delay(500);
}

int lookLeft() {
  int rightdist = 0;
  moveStop();  
  for(pos = 70; pos >= 0; pos-=10){
    servo.write(pos);
    delay(50);
  }
  delay(1000);
  rightdist = readPing();
  servo.write(70);
  return rightdist;  
}

int lookRight() {
  int leftdist = 0;
  moveStop();
  for(pos = 70; pos <= 140; pos+=10){
    servo.write(pos);
    delay(50);
  }
  delay(1000);
  leftdist = readPing();
  servo.write(70);
  return leftdist;  
}

Credits

mohammadsohail0008

mohammadsohail0008

42 projects • 31 followers

Comments