Retornei !
Vlw mesmo em bubulindo ( cara é estranho agradecer alguem com esse nick...)
Como sou meio que impaciente eu comecei a aprender e pulei o básico, como vc disse eu o problema principal era os ||(ou) em vez de &&(E) e tbm tirei aqueles if encadeados e aprendi a usar o else if, ta funcionando certinho lindo agora =D
O serial prints torna mais fácil saber que estudar oq ele ta fazendo quando da problema, como eu acredito que eles não fazem mal vo deixar eles quietos msm. =3
Assim como ficou no final
// Inclusao de bibliotecas
#include <NewPing.h>
#include <AFMotor.h>
// Definicoes
#define MAX_DISTANCE 300 // distancia maxima dos sensores
#define LEFT_TRIGGER_PIN 14 // Pino trigger do sensor esquerdo na porta 14
#define LEFT_ECHO_PIN 15 // Pino echo do sensor esquerdo na porta 15
#define RIGHT_TRIGGER_PIN 16 // Pino trigger do sensor direito na porta 16
#define RIGHT_ECHO_PIN 17 // Pino echo do sensor direito na porta 17
#define TURN_DISTANCE 22 // Valor real: 21.675519
#define SPEED 255 // Velocidade maxima
NewPing sensorLeft = NewPing(LEFT_TRIGGER_PIN, LEFT_ECHO_PIN, MAX_DISTANCE); // Novo sensor newping
NewPing sensorRight = NewPing(RIGHT_TRIGGER_PIN, RIGHT_ECHO_PIN, MAX_DISTANCE); // Novo sensor newping
AF_DCMotor engineLeft(1); // Seleciona motor da esquerda
AF_DCMotor engineRight(2); // Seleciona motor da direita
// INICIO
void setup()
{
Serial.begin(9600);
}
void loop()
{
// Usa o minimo de alocacao de variaveis possivel devido a problemas de relocacao:
// http://stackoverflow.com/a/15782933
// Espera 50ms para realizar uma nova leitura (valor minimo deve ser 29ms,
// menor que isso causa conflito nas leituras.
delay(50);
// Sensores enviam um sinal, recebem o sinal refletido em Ms e convertem para CM
unsigned int left = sensorLeft.ping() / US_ROUNDTRIP_CM;
unsigned int right = sensorRight.ping() / US_ROUNDTRIP_CM;
Serial.print("Left: ");
Serial.print(left);
Serial.print(" | Right: ");
Serial.print(right);
Serial.println("");
engineLeft.setSpeed(SPEED);
engineRight.setSpeed(SPEED);
// Continua em frente enquanto nao tiver obstaculos.
if (left >= TURN_DISTANCE && right >= TURN_DISTANCE) {
Serial.println("---- FRENTE ----");
engineLeft.run(FORWARD);
engineRight.run(FORWARD);
}
// Retorna quando estiver muito perto.
else if (left <= TURN_DISTANCE && right <= TURN_DISTANCE) {
Serial.println("---- TRAS ----");
engineLeft.run(BACKWARD);
engineRight.run(BACKWARD);
}
// Vira pra direita
else if (right <= TURN_DISTANCE && right < left) {
Serial.println("---- DIREITA ----");
engineLeft.run(BACKWARD);
engineRight.run(FORWARD);
delay(1500);
}
// Vira pra esquerda
else if (left <= TURN_DISTANCE && left < right) {
Serial.println("---- ESQUERDA ----");
engineLeft.run(FORWARD);
engineRight.run(BACKWARD);
delay(1500);
}
// Deu Treta
else {
Serial.println( " -----ERROR----- " );
delay(10000);
}
delay(1000);
}
Agora a ultima coisa que sobro é axar uma maneira de alimentar o arduino sem ter que conectar no notebook, um amigo falou para arrancar o encaixe do cabo que vai no PC e soldar 2 fios de alimentação mas to com dó, procurar um adaptador ou algo do tipo.
Novamente Brigadão! Nunca mais vo me apressar tanto em programação, melhor ir um passo por vez.