The following is a code built using an arduino software. This code is written to make the robot avoid obstacles and follow a specified path(ie. avoid black line and follow white line). The code compiles successfully but when uploaded to the robot does not work. Please help in fixing if this code. I wanted it to avoid black line and obstacles but when the code is uploaded is not moving at all.
int trigPin = 9;
int echoPin = 10;
int revright = 4; //REVerse motion of Right motor
int fwdleft = 7;
int revleft= 6;
int fwdright= 5; //ForWarD motion of Right motor
int c = 0;
#define LS 2 // left sensor
#define RS 8 // right sensor
void setup() {
//Serial.begin(9600);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LS, INPUT);
pinMode(RS, INPUT);
// put your setup code here, to run once:
}
void loop() {
long duration, distance;
digitalWrite(trigPin,HIGH);
delayMicroseconds(1000);
digitalWrite(trigPin, LOW);
duration=pulseIn(echoPin, HIGH);
distance =(duration/2)/29.1;
//Serial.print(distance);
//Serial.println("CM");
delay(10);
if((distance>20))
{
digitalWrite(5,HIGH); // If you dont get proper movements of your robot,
digitalWrite(4,LOW); // then alter the pin numbers
digitalWrite(6,LOW); //
digitalWrite(7,HIGH); //
}
else if(distance<20)
{
digitalWrite(5,HIGH);
digitalWrite(4,LOW);
digitalWrite(6,HIGH); //HIGH
digitalWrite(7,LOW);
}
if((digitalRead(LS)==HIGH) && (digitalRead(RS)==HIGH)) // Condition_1 stop
{
MoveForward();
}
if((digitalRead(LS)==LOW) && (digitalRead(RS)==LOW)) //CONDITION-2 FORWRD
{
Stop();
}
if((digitalRead(LS)==LOW) && (digitalRead(RS)==HIGH)) // RIGHT
{
TurnRight();
}
if((digitalRead(LS)==HIGH) && (digitalRead(RS)==LOW))
{
TurnLeft();
}
}
void MoveForward()
{
analogWrite(fwdleft, 50);
analogWrite(revleft, 0);
analogWrite(fwdright, 50);
analogWrite(revright, 0);
delay(20);
}
void TurnRight()
{
analogWrite(fwdleft, 0);
analogWrite(revleft, 60);
analogWrite(fwdright, 60);
analogWrite(revright, 0);
delay(30);
}
void TurnLeft()
{
analogWrite(fwdleft, 60);
analogWrite(revleft, 0);
analogWrite(fwdright, 0);
analogWrite(revright, 60);
delay(30);
}
void Stop()
{
analogWrite(fwdleft, 0);
analogWrite(revleft, 0);
analogWrite(fwdright, 0);
analogWrite(revright, 0);
delay(20);
}