La finalidad era que funcionara un servo con un sensor y solamente asignarle un sensor a cada servo distinto, pero la problemática que tengo es que necesariamente el primer sensor tiene que estar accionado para que los de mas funcionen, la programación que use fue la siguiente:
#include <Servo.h>
int trig1=3;
int echo1=2;
long duracion1;
long distancia1;
int trig2=5;
int echo2=4;
long duracion2;
long distancia2;
int trig3=7;
int echo3=6;
long duracion3;
long distancia3;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int grados=90;
int incremento=5;
int tiempo=30;
void setup(){
Serial.begin(9600);
pinMode(trig1,OUTPUT);
pinMode(echo1,INPUT);
pinMode(trig2,OUTPUT);
pinMode(echo2,INPUT);
pinMode(trig3,OUTPUT);
pinMode(echo3,INPUT);
servo1.attach(8);
servo2.attach(9);
servo3.attach(10);
servo4.attach(11);
servo1.write(0);
servo2.write(0);
servo3.write(0);
servo4.write(0);
delay(100);
}
void loop(){
digitalWrite(trig1,LOW);
delayMicroseconds(10);
digitalWrite(trig1,HIGH);
delayMicroseconds(10);
digitalWrite(trig1,LOW);
duracion1 = pulseIn(echo1,HIGH);
duracion1 = duracion1/2;
distancia1 = duracion1/29.15;
Serial.print("la distancia1 es ");
Serial.print(distancia1);
Serial.println("cm");
delay(1000);
if(distancia1>=10 and distancia1 <=20)
{
for(int i=0;i<=grados;i+=incremento)// +2
{
servo1.write(i);
delay(tiempo);
servo4.write(i);
delay(tiempo);
}
for(int i=grados;i>=0;i-=incremento)//-2
{
servo1.write(i);
delay(tiempo);
servo4.write(i);
delay(tiempo);
}
digitalWrite(trig2,LOW);
delayMicroseconds(10);
digitalWrite(trig2,HIGH);
delayMicroseconds(10);
digitalWrite(trig2,LOW);
duracion2 = pulseIn(echo2,HIGH);
duracion2 = duracion2/2;
distancia2 = duracion2/29.15;
Serial.print("la distancia2 es ");
Serial.print(distancia2);
Serial.println("cm");
delay(1000);
}
if(distancia2>=30 and distancia2 <=40)
{
for(int i=0;i<=grados;i+=incremento)// +2
{
servo2.write(i);
delay(tiempo);
servo4.write(i);
delay(tiempo);
}
for(int i=grados;i>=0;i-=incremento)//-2
{
servo2.write(i);
delay(tiempo);
servo4.write(i);
delay(tiempo);
}
digitalWrite(trig3,LOW);
delayMicroseconds(10);
digitalWrite(trig3,HIGH);
delayMicroseconds(10);
digitalWrite(trig3,LOW);
duracion3 = pulseIn(echo3,HIGH);
duracion3 = duracion3/2;
distancia3 = duracion3/29.15;
Serial.print("la distancia3 es ");
Serial.print(distancia3);
Serial.println("cm");
delay(1000);
}
if(distancia3>=40 and distancia3 <=50)
{
for(int i=0;i<=grados;i+=incremento)// +2
{
servo3.write(i);
delay(tiempo);
servo4.write(i);
delay(tiempo);
}
for(int i=grados;i>=0;i-=incremento)//-2
{
servo3.write(i);
delay(tiempo);
servo4.write(i);
delay(tiempo);
}
}
}
El servo 4 siempre se mantendría siempre accionado independientemente de que sensor se llegue a activar.
Por ejemplo:
si se activa el sensor 1 solo tendría que accionar el servo 1 y solamente ese sin necesidad de que los de mas sensores tuvieran que estar detectando algo, en si que cada par de sensor y servo fueran independiente de los otros.