Here's the code for those who can't be bothered to download and unzip it.
#include <NewPing.h>
#define TRIGGER_PIN 3 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 5 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
const int Motor2Pin1 = 6;
const int Motor2Pin2 = 9;
const int Motor1Pin1 = 10;
const int Motor1Pin2 = 11;
int a;
int b;
void setup()
{
pinMode(Motor1Pin1, OUTPUT);
pinMode(Motor1Pin2, OUTPUT);
pinMode(Motor2Pin1, OUTPUT);
pinMode(Motor2Pin2, OUTPUT);
Serial.begin(9600);
}
void loop()
{
sensor(b);
delay(100);
a=sensor(b);
delay(100);
motor(a);
delay(100);
}
int sensor(int b)
{
delay(50);
unsigned int uS = sonar.ping();
b = (uS / US_ROUNDTRIP_CM);
return b;
}
int motor(int a)
{
int val=a;
if(val==0 || val>20)
GoForward();
else if(val<19&&val>14)
{
GoRight();
}
else if(val <14&&val>5)
{
GoLeft();
}
else if (val>0&&val<5)
{
GoBackward();
}
}
void GoForward()
{
analogWrite(Motor1Pin2, 100);
analogWrite(Motor1Pin1, 255);
analogWrite(Motor2Pin2, 100);
analogWrite(Motor2Pin1, 255);
delay(100);
}
void GoBackward(){
analogWrite(Motor1Pin1, 100);
analogWrite(Motor1Pin2, 255);
analogWrite(Motor2Pin1, 100);
analogWrite(Motor2Pin2, 255);
delay(100);
}
void GoLeft(){
analogWrite(Motor1Pin1, 100);
analogWrite(Motor1Pin2, 255);
analogWrite(Motor2Pin2, 100);
analogWrite(Motor2Pin1, 255);
delay(100);
}
void GoRight(){
analogWrite(Motor1Pin2, 100);
analogWrite(Motor1Pin1, 255);
analogWrite(Motor2Pin1, 100);
analogWrite(Motor2Pin2, 255);
delay(100);
}
void Stop(){
digitalWrite(Motor1Pin2, LOW);
digitalWrite(Motor1Pin1, LOW);
digitalWrite(Motor2Pin1, LOW);
digitalWrite(Motor2Pin2, LOW);
delay(100);
}
Hint: A really good way of improving your code is by getting it to tell you what it is doing.