Navigation problem

Hello guys,
I want to ask why my robot (rover v2) is going always forward even if i call a backward method
This is mine code

void moveForward() //Napred { Serial.println(""); Serial.println("Odam napred"); analogWrite(E1,255); digitalWrite(M1,LOW); analogWrite(E2,255); digitalWrite(M2,LOW);; } void moveBackward() //Nazad { Serial.println(""); Serial.println("Odam nazad "); analogWrite(E1,255); digitalWrite(M1,HIGH); analogWrite(E2,255); digitalWrite(M2,HIGH); }

Hi,

Could you please try the attached example as-is (comes from the manual’s sample code #2, page 27) and tell us if that works?

Sincerely,
Rover_Example__2.zip (928 Bytes)

Yes the attached code is working properly, why i have problems in mine code when its same ?!!

When this sort of situation happens (and it happens a lot in robotics / embedded systems) and you cannot figure out what is different, the best option is to take the source code that works and modify it once step at a time, compiling and testing it every step until you figure out the differences causing the issue.

You could also post a copy of your (entire) code is (use an attachment) and get comments or help from the RobotShop community.

Sincerely,

Thank you very much sir.
This is mine code if someone notice something wrong please tell me

[code]#define ECHOPIN 8 // Pin za povraten signal (echo pulse)
#define TRIGPIN 7 // Pin za prakanje signal (trigger pulse)

//import processing.serial.*;
int E1 = 6; //M1 Kontrola na brzina motor 1
int E2 = 5; //M2 Kontrola na brzina motor 2
int M1 = 8; //M1 Kontrola na nasoka motor 1
int M2 = 7; //M2 Kontrola na nasoka motor 2

//#define USTrigger 3
//#define USEcho 4
//#define MaxDistance 100

unsigned int Time;
unsigned int distance;
float rastojanie = pulseIn(ECHOPIN, HIGH);
void setup()
{
Serial.begin(9600);

int i;
for(i=5;i<=8;i++)
pinMode(i, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if (Serial.available()) {
pinMode(ECHOPIN, INPUT);
pinMode(TRIGPIN, OUTPUT);
// Prakaj signal
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
// Presmetka na zvukot

float rastojanie = pulseIn(ECHOPIN, HIGH);
rastojanie= rastojanie/58;

Serial.print(rastojanie);
Serial.println(" cm");
delay(100);

Serial.println("Cisto rastojanie pred mene = ");
Serial.print(rastojanie);
}
if(rastojanie > 40 || rastojanie == 0 )
{

moveBackward();

}
else
{
moveStop();
delay(2000);
navigacija();

}
}

void moveForward() //Napred
{
Serial.println("");
Serial.println(“Odam napred”);
analogWrite(E1,255);
digitalWrite(M1,LOW);
analogWrite(E2,255);
digitalWrite(M2,LOW);;
}
void moveBackward() //Nazad
{
Serial.println("");
Serial.println(“Odam nazad “);
analogWrite(E1,255);
digitalWrite(M1,HIGH);
analogWrite(E2,255);
digitalWrite(M2,HIGH);
}
void moveRight() //Desno
{
Serial.println(””);
Serial.println(“Vrtam desno”);
analogWrite(E1,255);
digitalWrite(M1,LOW);
analogWrite(E2,0);
digitalWrite(M2,HIGH);

}
void moveLeft() //Levo
{
Serial.println("");
Serial.println(“Vrtam levo”);
analogWrite(E1,0);
digitalWrite(M1,HIGH);
analogWrite(E2,255);
digitalWrite(M2,LOW);

}
void moveStop() //Zastani
{
Serial.println("");
Serial.println(“Imam prepraka zastanuvam”);
analogWrite (E1,0);
digitalWrite(M1,LOW);
analogWrite (E2,0);
digitalWrite(M2,LOW);
}

void navigacija()
{
if(rastojanie<40 )
{
moveBackward();
delay(4000);
moveRight();
delay(1000);

}

}[/code]