Circuito con servomotor y sensor de distancia.

 

 

 

 

 

 

#include <EducationShield.h>
#include <pitches.h>
// librería para poder controlar el servo
#include <Servo.h>
#define trigPin 13
#define echoPin 12
// variable para controlar el servo
Servo servoMotor;

void setup()
{ Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Inicia el servo para que trabaje con el pin 9
servoMotor.attach(9);
// Iniciamos al ángulo 0 el servomotor
servoMotor.write(0);
}

void loop()
{ long duracion, distancia ;
digitalWrite(trigPin, LOW); // Nos aseguramos de que el trigger está desactivado
delayMicroseconds(2); // Para asegurarnos de que el trigger esta LOW
digitalWrite(trigPin, HIGH); // Activamos el pulso de salida
delayMicroseconds(10); // Esperamos 10µs. El pulso sigue active este tiempo
digitalWrite(trigPin, LOW); // Cortamos el pulso y a esperar el echo
duracion = pulseIn(echoPin, HIGH) ;
distancia = duracion / 2 / 29.1 ;
Serial.println(String(distancia) + » cm.») ;
int Limite = 50 ; // Medida en vacío del sensor
if ( distancia < Limite)
{ for (int i = 0; i <= 180; i++)
{
// Desplaza al ángulo i
servoMotor.write(i);
// Hacemos una pausa de 30ms
delay(60);
}
// sentido negativo
for (int i = 179; i > 0; i–)
{
// Desplaza al ángulo i
servoMotor.write(i);
// Hacemos una pausa de 30ms
delay(60);
}}
else
{ servoMotor.write(0);}
delay (500) ; // Para limitar el número de mediciones
}