int dirpin=4;
int stepin=5;
int back_step=6;
int start=2;
int stop=3;
const int front_rotation = 10000;
int duration;
int distance;
int duration_2;
int distance_2;
void setup()
{
pinMode(start, INPUT_PULLUP);
pinMode(stop, INPUT_PULLUP);
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, INPUT);
pinMode(11, OUTPUT);
pinMode(10, INPUT);
}
void loop()
{
// FRONT-HC-SENSOR
digitalWrite(8, LOW);
delayMicroseconds(2);
digitalWrite(8, HIGH);
delayMicroseconds(10);
digitalWrite(8, LOW);
duration = pulseIn(9, HIGH);
distance = duration * 0.034 / 2;
// BACK-HC-SENSOR
digitalWrite(11, LOW);
digitalWrite(11, HIGH);
delayMicroseconds(10);
digitalWrite(11, LOW);
duration_2 = pulseIn(10, HIGH);
distance_2 = duration_2 * 0.034 / 2;
int s_val=digitalRead(start);
int e_val=digitalRead(stop);
if(s_val==0) //IF START BUTTON PRESSED
{
if(distance>=15)
{
Serial.println("\nROBOT STARTED");
digitalWrite(dirpin, HIGH);
Serial.println("robot forward moving !");
for(int x = 0 ; x <=front_rotation ; x++)
{
if(digitalRead(3)==0)
{
Serial.println("Stoped!");
break;
}
if(x==1000)
{
back_gear();
x=0;
}
digitalWrite(stepin, HIGH);
delayMicroseconds(1000);
digitalWrite(stepin, LOW);
delayMicroseconds(3000);
}
}
else if(distance<=15)
{
back_gear();
}
}
}
void back_gear()
{
digitalWrite(7, LOW);
digitalWrite(dirpin, LOW);
Serial.println("Reversing.. !");
for(int y = 0 ; y <=front_rotation ; y++)
{
digitalWrite(6, HIGH);
delayMicroseconds(1000);
digitalWrite(6, LOW);
delayMicroseconds(3000);
if(y==1000)
{
break;
}
}
}