Skip to content

Instantly share code, notes, and snippets.

@dsvakola
Created July 28, 2018 15:26
Show Gist options
  • Save dsvakola/1085604428fc534eba2065fa4064a985 to your computer and use it in GitHub Desktop.
Save dsvakola/1085604428fc534eba2065fa4064a985 to your computer and use it in GitHub Desktop.
Obstacle & Edge Avoiding Robot using Arduino
/*
Arudino Obstacle Avoiding Robot
Vidyasagar Academy, Akola
www.vsagar.org
*/
#define LS 2 // left sensor // left sensor input pin defined
#define RS 3 // right sensor // right sensor input pin defined
#define LMpos 4 // left motor output pin defined
#define LMneg 5 // left motor output pin defined
#define RMneg 6 // right motor output pin defined
#define RMpos 7 // right motor output pin defined
void setup()
{
pinMode(LS, INPUT); // pin-2 is defined as input pin
pinMode(RS, INPUT); // pin-3 is defined as input pin
pinMode(LMpos, OUTPUT); // pin-4 is defined as output pin
pinMode(LMneg, OUTPUT); // pin-5 is defined as output pin
pinMode(RMneg, OUTPUT); // pin-6 is defined as output pin
pinMode(RMpos, OUTPUT); // pin-7 is defined as output pin
}
void loop() // infinite loop
{
if(digitalRead(LS) && digitalRead(RS)) // no obstacle in front of LS and white below RS
{
// forward
digitalWrite(LMpos, HIGH);
digitalWrite(LMneg, LOW);
digitalWrite(RMneg, LOW);
digitalWrite(RMpos, HIGH);
}
if(!(digitalRead(LS)) && digitalRead(RS)) // obstacle in front of LS and white below RS
{
// stop
digitalWrite(LMpos, LOW);
digitalWrite(LMneg, LOW);
digitalWrite(RMneg, LOW);
digitalWrite(RMpos, LOW);
delay(1000);
// backward
digitalWrite(LMpos, LOW);
digitalWrite(LMneg, HIGH);
digitalWrite(RMneg, HIGH);
digitalWrite(RMpos, LOW);
delay(700);
// soft right turn
digitalWrite(LMpos, HIGH);
digitalWrite(LMneg, LOW);
digitalWrite(RMneg, LOW);
digitalWrite(RMpos, LOW);
delay(600);
}
if(digitalRead(LS) && !(digitalRead(RS))) // no obstacle in front of LS and black or out of edge below RS
{
// stop
digitalWrite(LMpos, LOW);
digitalWrite(LMneg, LOW);
digitalWrite(RMneg, LOW);
digitalWrite(RMpos, LOW);
delay(1000);
// backward
digitalWrite(LMpos, LOW);
digitalWrite(LMneg, HIGH);
digitalWrite(RMneg, HIGH);
digitalWrite(RMpos, LOW);
delay(700);
// soft left turn
digitalWrite(LMpos, LOW);
digitalWrite(LMneg, LOW);
digitalWrite(RMneg, LOW);
digitalWrite(RMpos, HIGH);
delay(600);
}
if(!(digitalRead(LS)) && !(digitalRead(RS))) // obstacle in front of LS and black (out of edge) below RS
{
// stop
digitalWrite(LMpos, LOW);
digitalWrite(LMneg, LOW);
digitalWrite(RMneg, LOW);
digitalWrite(RMpos, LOW);
delay(1000);
// backward
digitalWrite(LMpos, LOW);
digitalWrite(LMneg, HIGH);
digitalWrite(RMneg, HIGH);
digitalWrite(RMpos, LOW);
delay(1000);
// soft right turn
digitalWrite(LMpos, HIGH);
digitalWrite(LMneg, LOW);
digitalWrite(RMneg, LOW);
digitalWrite(RMpos, LOW);
delay(600);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment