Created
July 28, 2018 15:26
-
-
Save dsvakola/1085604428fc534eba2065fa4064a985 to your computer and use it in GitHub Desktop.
Obstacle & Edge Avoiding Robot using Arduino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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