Вы находитесь на странице: 1из 5

Proyecto:

Detector de Objetos

Materiales:
Sensor Ultrasnico HC-SR04
Arduino (Uno, Nano)
Servo

Fecha: 30/01/2017
Este dispositivo funciona con tres sensores ultrasnicos los cuales censan
distancia, y que, dependiendo de qu sensor capture la lectura, un servomotor se
posiciona en direccin al sensor que detect un objetivo. El rango de distancia se
puede ajustar para cada sensor.

Enseguida se muestra el diagrama de conexiones.

Esta misma configuracin se puede adaptar en un Arduino Nano. Cabe sealar


que si el sensor ultrasnico cuenta con los pines Trigger y Echo, estos ltimos se
deben conectar a un mismo pin de Arduino, una ventaja que ofrece la librera
NewPing v1.8 obtenida en:

https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home

El pin de control para el servo motor puede ser conectado a cualquiera de los
pines PWM del Arduino Uno o Nano (Pines: Digitales 3, 5, 6, 9, 10 y 11).

A continuacin se muestra el cdigo implementado en el proyecto.


/*
Proyecto : Seguidor ultrasnico
Autor(es): Atayde Serrano David Emilio
De la Cruz Prez Jos
Versin : V1.0
Fecha : 30/01/2017
Puedes descargar la libreria NewPing.h en : https://bitbucket.org/teckel12/arduino-
new-ping/wiki/Home
*/

#include <NewPing.h> // Librera del sensor ultrasnico


#include <Servo.h> // Librera del servo motor
#define SONAR_NUM 3 // Nmero de sensores.
#define MAX_DISTANCE 20 // Mxima distancia(en cm) de medicin.
Servo myservo; // Crear objeto servo para controlar un servo

NewPing sonar[SONAR_NUM] = { // Matriz de objetos del sensor


NewPing(4,4, MAX_DISTANCE), // Cada uno de los pines Echo y Trigger de los
sensores y la maxima distancia al sensor.
NewPing(7,7, MAX_DISTANCE),
NewPing(8, 8, MAX_DISTANCE)
};

int sonar1; // Variables utilizadas para manejo de la medicin de distancia.


int sonar2;
int sonar3;

void setup() {
myservo.attach(9); //Pin Data del servomotor.
Serial.begin(115200); // Abra el monitor en serie a 115200 baudios para ver los
resultados del sensor.
}

void loop() {

sonar1=sonar[0].ping_cm(); //Medicin del primer sensor.


delay(50);
Serial.print("sonar1: ");
Serial.print(sonar1);
Serial.print("cm ");
Serial.println();

sonar2=sonar[1].ping_cm(); // Medicin del segundo sensor.


delay(50);
Serial.print("sonar2: ");
Serial.print(sonar2);
Serial.print("cm ");
Serial.println();

sonar3=sonar[2].ping_cm(); // Medicin del tercer sensor.


delay(50);
Serial.print("sonar3: ");
Serial.print(sonar3);
Serial.print("cm ");
Serial.println();

if(sonar1 != 0) // Si primer sensor detecta objetivo, mueve el servo a la posicin


de cero grados.
{
myservo.write(0);
}

if(sonar2 != 0) // Si segundo sensor detecta objetivo, mueve el servo a la posicin


de 90 grados.
{
myservo.write(90);
}

if(sonar3 != 0) // Si tercer sensor detecta objetivo, mueve el servo a la posicin de


180 grados.
{
myservo.write(180);
}

Вам также может понравиться