Project Banao Obstacle Avoiding Robot Car Kit | Arduino UNO Smart Autonomous Robot with Ultrasonic Sensor, 4WD Motors & Servo Motor | DIY Robotics STEM Science Project for School Students

–

by

in

#include <Servo.h>

const byte L1 = 2, L2 = 3, R1 = 4, R2 = 7;
const byte SERVO_PIN = 9, TRIG = 10, ECHO = 11;
Servo scanner;

void drive(int left, int right) {
  digitalWrite(L1, left > 0);  digitalWrite(L2, left < 0);
  digitalWrite(R1, right > 0); digitalWrite(R2, right < 0);
}

long distanceCm() {
  digitalWrite(TRIG, LOW); delayMicroseconds(2);
  digitalWrite(TRIG, HIGH); delayMicroseconds(10);
  digitalWrite(TRIG, LOW);
  unsigned long us = pulseIn(ECHO, HIGH, 25000UL);
  return us == 0 ? 0 : us / 58;
}

long lookAt(int angle) {
  scanner.write(angle);
  delay(400);
  return distanceCm();
}

void setup() {
  pinMode(L1, OUTPUT); pinMode(L2, OUTPUT);
  pinMode(R1, OUTPUT); pinMode(R2, OUTPUT);
  pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT);
  drive(0, 0);
  scanner.attach(SERVO_PIN);
  scanner.write(90);
  delay(500);
}

void loop() {
  long ahead = distanceCm();
  if (ahead == 0) { drive(0, 0); delay(150); return; }
  if (ahead > 25) { drive(1, 1); delay(80); return; }

  drive(0, 0); delay(100);
  drive(-1, -1); delay(300);
  drive(0, 0);
  long left = lookAt(150);
  long right = lookAt(30);
  scanner.write(90); delay(300);

  if (left == 0 && right == 0) {
    drive(0, 0); delay(200); return;
  }
  if (left > right) drive(-1, 1);
  else drive(1, -1);
  delay(450);
  drive(0, 0);
}

Leave a Reply

Your email address will not be published. Required fields are marked *