Coche teledirigido.

Hola a todos. Estoy haciendo un coche teledirigido, y que gracias a unos sensores de proximidad sharp pueda esquivar objetos. El proble es que el sensor siempre marca la distancia la cual esta midiendo en el momento que le indico que empiece a hacer la conducción automática, por eso no gira ni reacciona ante un obstáculo.

Os pongo el código. Gracias de antemano.

#include <Servo.h>
#include <Arduino.h>
#include <NECIRrcv.h>

#define IRPIN A5 //Pin analog 5 sensor IR
#define senr A1
#define senl A0

Servo servoD;
Servo servoI;

NECIRrcv ir(IRPIN) ;
unsigned long ircode ;

int valizq= 0;
int valder= 0;
int motl= 7;
int motr= 8;
int ledS1 = 4;
int ledS2 = 3;
boolean ConduccionAutomaticaBool = false;

void setup()
{
pinMode(motl, OUTPUT);
pinMode(motr, OUTPUT);
servoD.attach(7);
servoI.attach(8 );
Serial.begin(9600);

ir.begin() ;
}
void adelante(){
servoD.write(80);
servoI.write(100);
}
void atras(){
servoD.write(100);
servoI.write(80);
}
void derecha(){
servoD.write(90);
servoI.write(100);
}
void izquierda(){
servoD.write(80);
servoI.write(90);
}
void parar(){
servoD.write(90);
servoI.write(90);
}

void loop()
{

Serial.print("Sensor iz: ");
Serial.print(valizq);
delay(500);

Serial.print("Sensor der: ");
Serial.println(valder);
delay(1000);

while (ir.available()) {

ircode = ir.read() ;

if(ConduccionAutomaticaBool ==true){
valizq=analogRead (senl);
valder=analogRead (senr);

if(valder <=10 && valizq <=10){
parar();
delay(1000);
atras();
}else if(valder <= 10){
izquierda();
}else if(valizq <= 10){
derecha();
}else{
adelante();
};
}

switch(ircode){

case 4144561665: //pulsar 2 avanza
adelante();
break;

case 4010868225: //pulsar 8 retrocede
atras();
break;

case 4077714945: //pulsar 5 para parar
parar();
break;

case 4278255105: //pulsar 6 gira derecha
derecha();
break;

case 3810328065: //pulsar 4 gira izquierda
izquierda();
break;

case 4244831745: //pulsar

valizq=analogRead (senl);
valder=analogRead (senr);

if(valder <=10 && valizq <=10){
parar();
delay(1000);
atras();
}else if(valder <= 10){
izquierda();
}else if(valizq <= 10){
derecha();
}else{
adelante();
}

break;

case 4228120065://sirena
digitalWrite(ledS1, HIGH);
delay(100);
digitalWrite(ledS2, HIGH);
delay(100);
digitalWrite(ledS1, LOW);
delay(100);
digitalWrite(ledS2, LOW);
delay(100);
break;
}}
}

En tu programa ConduccionAutomaticaBool siempre es false.

Saludos.

PeterKantTropus: En tu programa ConduccionAutomaticaBool siempre es false.

Saludos.

Como podria Cambiarlo?. He provado diferentes maneras pero no funciona

Por favor, no repitas los posts, no seas impaciente y si no te contestan, intenta aclarar mejor lo que preguntas.