/*Programa en el que un servo es controlado por tres ultrasonidos.
Este se moverá hacía el objeto más cercano, bien a su derecha, centro o izquierda.*/
//Librerías necesarias.
#include <Ultrasonic.h>
#include <Servo.h>
//Declaración de los sensores de ultrasonidos.
Ultrasonic sensorI(12,11);
Ultrasonic sensorC(10,9);
Ultrasonic sensorD(8,7);
//Declaración del servo-motor.
Servo servo;
void setup()
{
//Indicamos el modo de actuación de cada pin.
pinMode(12, OUTPUT);
pinMode(11, INPUT);
pinMode(10, OUTPUT);
pinMode(9, INPUT);
pinMode(8, OUTPUT);
pinMode(7, INPUT);
Serial.begin(9600);
//Indicamos que el servo está asociado al pin 2.
servo.attach(2);
}
void loop()
{
//Variables que almacenan el valor de la distancia
//detectada por cada ultrasonidos.
int I,C,D;
//Almacenamos la distancia detectada por cada sensor.
I = sensorI.read();
C = sensorC.read();
D = sensorD.read();
//Mostramos la información por el monitor serie.
Serial.print(I);
Serial.print("\t");
Serial.print(C);
Serial.print("\t");
Serial.println(D);
//Si la distancia al objeto por la izquierda es menor que por la derecha y el centro...
if((I < C)&&(I < D))
{
servo.write(180); //...el servo apunta a 180º.
}
else if((C < I) && (C < D)) //ó si la distancia al objeto por el centro es menor que por la derecha y la izquierda...
{
servo.write(90); //...el servo apunta a 90º.
}
else if((D < I) && (D < C)) //ó si la distancia al objeto por la derecha es menor que por el centro y la izquierda...
{
servo.write(0); //...el servo apunta a 180º.
}
delay(250);
}