h>
#include <Servo.h>
#include <delay.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
Servo myservo;
int SENSOR_DISTANCE;
int LEFT_SENSOR_DISTANCE;
int RIGHT_SENSOR_DISTANCE;
int SNZ_DISTANCE_L;
int SNZ_DISTANCE_R;
int LFT_SNZ_DIS;
int RGT_SNZ_DIS;
#define TRIG_PIN 40
#define ECHO_PIN 39
#define MIN_DISTANCE 40
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
myservo.attach(9);
sensorCenter();
stopMotors();
void loop() {
SENSOR_DISTANCE=sensorDistance();
goForward();
else {
stopMotors();
LFT_SNZ_DIS=toTheLeft();
RGT_SNZ_DIS=toTheRight();
int NEW_SNZ_DIS_LFT;
for(int i=1;i<=3;i++){
goLeft();
delay(300);
stopMotors();
NEW_SNZ_DIS_LFT=sensorDistance();
if(NEW_SNZ_DIS_LFT >=MIN_DISTANCE)
break;
sensorCenter();
int NEW_SNZ_DIS_RGT;
for(int j=1;j<=3;j++){
goRight();
delay(300);
stopMotors();
NEW_SNZ_DIS_RGT=sensorDistance();
if(NEW_SNZ_DIS_RGT >=MIN_DISTANCE)
break;
sensorCenter();
else
{
goBackward();
delay(500);
stopMotors();
sensorCenter();
void stopMotors(){
int sensorDistance(){
int distance;
int uS = sonar.ping();
distance = uS / US_ROUNDTRIP_CM;
if(distance !=0){
return distance;
delay(300);
}
void goForward(){
void goBackward(){
void goLeft(){
void goRight(){
void sensorCenter(){
myservo.write(90);
delay(500);
void turnSensorLeft(){
myservo.write(120);
delay(500);
void turnSensorRight(){
myservo.write(60);
delay(500);
}
int leftSensorDistance(){
int LEFT_SENSOR_DISTANCE;
LEFT_SENSOR_DISTANCE=sensorDistance();
return LEFT_SENSOR_DISTANCE;
int rightSensorDistance(){
int RIGHT_SENSOR_DISTANCE;
RIGHT_SENSOR_DISTANCE=sensorDistance();
return RIGHT_SENSOR_DISTANCE;
int toTheLeft(){
int LEFT_SENSOR_DISTANCE;
turnSensorLeft();
LEFT_SENSOR_DISTANCE=leftSensorDistance();
return LEFT_SENSOR_DISTANCE;
int toTheRight(){
int RIGHT_SENSOR_DISTANCE;
turnSensorRight();
RIGHT_SENSOR_DISTANCE=rightSensorDistance();
return RIGHT_SENSOR_DISTANCE;