hola estoy haciendo un robot apagador de velas que se guía por sensor ultrasónico , línea y flama
escribir cada código por separado y lo probé y si sirven pero al poner todas las condicionales if al ejecutarlo e el robot solo detecta la ultima la del sensor ultrasónico, ya probe con else White , y nose como hacer , se podrá dejar una condicional principal , y por que no ejecuta todo el código
////////////////////////////
const int sensorFlama = 2;
const int sensorFlama1 = 3;
const int sensorFlama2 = 4;
const int sensorFlama3 = 7;
const int sensorFlama4 = 8;
const int sensorFlama5 = 11;
const int sensorFlama6 = 12;
////*//////////////////////*/
int izqA = 5; //adelante
int izqB = 6; //atrás
int derA = 9; //ad
int derB = 10; //// at
int vel = 175; ///(0-255)
////////////////////////////
int sensorline = 52; // sensorline // Recordar que 5,6,9,10 ocupadas por motores
int sensorline1 = 53;
int sensorline2 = 50;
int sensorline3 = 51;
/*////*//////////////////////////*/
int LineaV= 0;
int LineaV1=0;
int LineaV2=0;
int LineaV3=0;
// para Calcular distacia
/////////////////////
int pecho = 44; // define el pin 2 como (pecho) para el Ultrasonido
int ptrig = 45; // define el pin 3 como (ptrig) para el Ultrasonido
int duracion, distancia;
void setup() {
Serial.begin(9600);
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
pinMode(sensorFlama, INPUT);
pinMode(sensorFlama1, INPUT);
pinMode(sensorFlama2, INPUT);
pinMode(sensorFlama3, INPUT);
pinMode(sensorFlama4, INPUT);
pinMode(sensorFlama5, INPUT);
pinMode(sensorFlama6, INPUT);
pinMode(sensorline,INPUT);
pinMode(sensorline1,INPUT);
pinMode(sensorline2,INPUT);
pinMode(sensorline3,INPUT);
pinMode(pecho, INPUT); // define el pin 2 como entrada (pecho)
pinMode(ptrig,OUTPUT); // define el pin 3 como salida (ptrig)
}
void loop() {
// put your main code here, to run repeatedly:
int humedad = digitalRead(sensorFlama);
int humedad1 = digitalRead(sensorFlama1);
int humedad2 = digitalRead(sensorFlama2);
int humedad3 = digitalRead(sensorFlama3);
int humedad4 = digitalRead(sensorFlama4);
int humedad5 = digitalRead(sensorFlama5);
int humedad6 = digitalRead(sensorFlama6);
delay(50);
{
LineaV = digitalRead(sensorline);
LineaV1 = digitalRead(sensorline1);
LineaV2 = digitalRead(sensorline2);
LineaV3 = digitalRead(sensorline3);
delay(50);//Esperar 100 ms
}
analogWrite(derB, vel);
analogWrite(izqB, vel);
analogWrite(derA, 0); /*atras*/
analogWrite(izqA, 0); /*atras*/
{
digitalWrite(ptrig, HIGH); // genera el pulso de trigger por 10us
delay(0.01);
digitalWrite(ptrig, LOW);
duracion = pulseIn(pecho, HIGH); // Lee el tiempo del Echo
distancia = (duracion/2) / 29; // calcula la distancia en centimetros
delay(10);
}
{
if (humedad == HIGH)
{
Serial.println("sensorFlama on");
analogWrite(derB, 0); // Girar a la derecha durante 500 milisegundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
delay(250);
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (1000);
}
else if ((LineaV and LineaV3 != 0)and(humedad1 == HIGH) )
{
Serial.println("atras");
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay(250);
}
else if (humedad1 == HIGH)
{
Serial.println("sensorFlama1 on");
analogWrite(derB, vel);
analogWrite(izqB, vel);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (1000);
}
else if (humedad2 == HIGH)
{
Serial.println("sensorFlama2 on");
analogWrite(derB, 0); // Girar a la derecha durante 500 milisegundos
analogWrite(izqB, vel);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay(250);
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (1000);
}
else if (humedad3 == HIGH)
{
Serial.println("sensorFlama3 on");
analogWrite(derB, 0); // Girar a la derecha durante 500 milisegundos
analogWrite(izqB, vel);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay(500);
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (1000);
}
else if (humedad4 == HIGH)
{
Serial.println("sensorFlama4 on");
analogWrite(derB, 0); // Girar a la derecha durante 500 milisegundos
analogWrite(izqB, vel);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay(750);
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (1000);
}
else if (humedad5 == HIGH)
{
Serial.println("sensorFlama5 on");
analogWrite(derB, 0); // Girar a la derecha durante 500 milisegundos
analogWrite(izqB, vel);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay(750);
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (1000);
}
else if (humedad6 == HIGH)
{
Serial.println("sensorFlama6 on");
analogWrite(derB, 0); // Girar a la derecha durante 500 milisegundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
delay(750);
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (1000);
}
else if (LineaV1 and LineaV2 != 0 )
{
Serial.println("Blanco");
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
analogWrite(derB, 0); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);
delay(500);
analogWrite(derB, vel); // Parar los motores por 1500 mili segundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
delay(250);
}
/* else if (distancia <= 15 && distancia >=2)
{
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
delay (500);
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);
delay (500);
analogWrite(derB, 0); // Girar a la derecha durante 500 milisegundos
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
delay(250);
}*/
}
}
gracias