Buenas,
Amigos lo que sucede es que estoy haciendo un caro que cumpa ciertas condiciones en donde debo utilizar 4 sensores, el problema es que lo sensores me miden una distancia y dependiendo si la distancia es menor que 8 cm debe ejecutar una accion en este caso volver la distancia un 1 si esta a menos de 8cm o un 0 si es lo contrario, lo que sucede es que al realizar el codigo solo me lee el primer if que este escrito los demas no los toma, tal ves me podrian ayudar un poco adjunto todo el codigo
int pin_enableMotor1 = 10; //Enable para el motor 1
int pin_contro1_Motor1 = 9; //Pin de control para el motor 1
int pin_contro2_Motor1 = 8; //Pin de control para el motor 1
int pin_enableMotor2 = 13; //Enable para el motor 2
int pin_contro1_Motor2 = 12; //Pin de control para el motor 2
int pin_contro2_Motor2 = 11; //Pin de control para el motor 2
const int TriggerI = 19; //Pin digital para el Trigger del sensor
const int EchoI = 18; //Pin digital para el Echo del sensor
const int TriggerAI = 17;
const int EchoAI = 16;
const int TriggerAD = 4;
const int EchoAD = 5;
const int TriggerD = 6;
const int EchoD = 7;
void setup() {
Serial.begin(9600);//iniciailzamos la comunicación
pinMode(pin_enableMotor1, OUTPUT); //Inicializar como salidas los pines del arduino
pinMode(pin_contro1_Motor1, OUTPUT);
pinMode(pin_contro2_Motor1, OUTPUT);
pinMode(pin_enableMotor2, OUTPUT);
pinMode(pin_contro1_Motor2, OUTPUT);
pinMode(pin_contro2_Motor2, OUTPUT);
pinMode(TriggerI, OUTPUT); //pin como salida
pinMode(EchoI, INPUT); //pin como entrada
digitalWrite(TriggerI, LOW);//Inicializamos el pin con 0
pinMode(TriggerAI, OUTPUT);
pinMode(EchoAI, INPUT);
digitalWrite(TriggerAI, LOW);
pinMode(TriggerAD, OUTPUT);
pinMode(EchoAD, INPUT);
digitalWrite(TriggerAD, LOW);
pinMode(TriggerD, OUTPUT);
pinMode(EchoD, INPUT);
digitalWrite(TriggerD, LOW);
}
void loop()
{
long tI; //timepo que demora en llegar el eco
long dI; //distancia en centimetros
long tAI;
long dAI;
long tAD;
long dAD;
long tD;
long dD;
float Suma1;
float Suma2;
float Suma3;
float Suma4;
float Act1;
float Act2;
float Act3;
float Act4;
float Fsuma1;
float Fsuma2;
float Fsuma3;
float Fsuma4;
float MI11;
float MI12;
float MD11;
float MD12;
digitalWrite(TriggerI, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(TriggerI, LOW);
digitalWrite(TriggerAI, HIGH);
delayMicroseconds(10);
digitalWrite(TriggerAI, LOW);
digitalWrite(TriggerAD, HIGH);
delayMicroseconds(10);
digitalWrite(TriggerAD, LOW);
digitalWrite(TriggerD, HIGH);
delayMicroseconds(10);
digitalWrite(TriggerD, LOW);
tI = pulseIn(EchoI, HIGH); //obtenemos el ancho del pulso
dI= tI/59;
tAI = pulseIn(EchoAI, HIGH);
dAI= tAI/59;
tAD = pulseIn(EchoAD, HIGH);
dAD= tAD/59; //escalamos el tiempo a una distancia en cm
tD = pulseIn(EchoD, HIGH);
dD= tD/59;
}
// aca es donde tengo el problema
if (dI<8){
dI=1;
}
else{
dI=0;
}
if (dAI<=8){
dAI=1;
}
if (dAI > 8){
dAI = 0;
}
if (dAD<=8){
dAD=1;
}
else{
dAD=0;
}
if (dD<=8){
dD=1;
}
else{
dD=0;
}
Serial.print("Distancia 1: ");
Serial.print(dI); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
Serial.print("Distancia 2: ");
Serial.print(dAI); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
Serial.print("Distancia 3: ");
Serial.print(dAD); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
Serial.print("Distancia 4: ");
Serial.print(dAD); //Enviamos serialmente el valor de la distancia
Serial.print("cm");
Serial.println();
delay(10);
//CAPA OCULTA 4 NEORONAS DE SALIDA
//Suma
Suma1=((dI0.45706)+(dAI-4.1179)+(dAD*-4.5365)+(dD0.58484)+1.3453);
Suma2=((dI0.1137)+(dAI*-2.9535)+(dAD*-2.6869)+(dD0.20462)+1.1636);
Suma3=((dI-3.0875)+(dAI*-2.6952)+(dAD3.0855)+(dD5.8599)-1.7056);
Suma4=((dI0.21037)+(dAI-0.13126)+(dAD0.61858)+(dD0.87511)+4.1088);
//Funcion de activacion
Act1=((exp(Suma1))-(exp(-Suma1)))/((exp(Suma1))+(exp(-Suma1)));
Act2=((exp(Suma2))-(exp(-Suma2)))/((exp(Suma2))+(exp(-Suma2)));
Act3=((exp(Suma3))-(exp(-Suma3)))/((exp(Suma3))+(exp(-Suma3)));
Act4=((exp(Suma4))-(exp(-Suma4)))/((exp(Suma4))+(exp(-Suma4)));
//SALIDA DE LA NEURONA
//Suma
Fsuma1=((Act16.1154)+(Act21.332)+(Act3*-7.6822)+(Act42.1707)+5.2348);
Fsuma2=((Act1-6.1649)+(Act2*-1.2408)+(Act37.6855)+(Act4-4.4856)-2.8806);
Fsuma3=((Act15.6016)+(Act22.055)+(Act37.6532)+(Act43.2039)+4.2857);
Fsuma4=((Act1*-5.6284)+(Act2*-2,0447)+(Act3*-7,6447)+(Act4*-3,3712)+3.81);
//Funciòn de activacion y salida
MI11=((exp(Fsuma1))-(exp(-Fsuma1)))/((exp(Fsuma1))+(exp(-Fsuma1)));
if (MI11>0){
digitalWrite(pin_enableMotor1, HIGH);
digitalWrite(pin_contro1_Motor1, HIGH);}
else{
digitalWrite(pin_enableMotor1, HIGH);
digitalWrite(pin_contro1_Motor1, LOW);
}
MI12=((exp(Fsuma2))-(exp(-Fsuma2)))/((exp(Fsuma2))+(exp(-Fsuma2)));
if (MI12>0){
digitalWrite(pin_enableMotor1, HIGH);
digitalWrite(pin_contro2_Motor1, HIGH);}
else{
digitalWrite(pin_enableMotor1, HIGH);
digitalWrite(pin_contro2_Motor1, LOW);
}
MD11=((exp(Fsuma3))-(exp(-Fsuma3)))/((exp(Fsuma3))+(exp(-Fsuma3)));
if (MD11>0){
digitalWrite(pin_enableMotor2, HIGH);
digitalWrite(pin_contro1_Motor2, HIGH);}
else{
digitalWrite(pin_enableMotor2, HIGH);
digitalWrite(pin_contro1_Motor2, LOW);
}
MD12=((exp(Fsuma4))-(exp(-Fsuma4)))/((exp(Fsuma4))+(exp(-Fsuma4)));
if (MD12>0){
digitalWrite(pin_enableMotor2, HIGH);
digitalWrite(pin_contro2_Motor2, HIGH);}
else{
digitalWrite(pin_enableMotor2, HIGH);
digitalWrite(pin_contro2_Motor2, LOW);
}
}