#include #define echoPin 7 // Echo Pin #define trigPin 8 // Trigger Pin #define LEDPin 13 // LED pin boolean algo; // true si hay algo en rango int i, j; int maximumRange = 50; // Distancia maxima int minimumRange = 10; // Distancia minima long duration, distance; // Duración utílizada para calcular la distancia Servo myservo; // instancia objero Servo void setup() { Serial.begin (9600); myservo.attach(9); // pin asociado al objeto Servo pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(LEDPin, OUTPUT); } void loop() { sensar(); accion(); if(!algo) { while(i<171) { for (i=j; i<=170; i++) { // giro sentido antihorario myservo.write(i); // mueve el servo a la posición indicada sensar(); accion(); j = i; if(algo) break; } } } while(i>10) { if(!algo) { for (j=i; j>=10; j--) { // giro sentido horario myservo.write(j); // mueve el servo a la posición indicada sensar(); accion(); i=j; if(algo) break; } } sensar(); accion(); } } void accion() { if (distance >= maximumRange || distance <= minimumRange){ Serial.println("Nada por aquí"); digitalWrite(LEDPin, LOW); algo = false; } else { algo = true; Serial.print("Objeto a: "); Serial.print(distance); Serial.println(" cm."); digitalWrite(LEDPin, HIGH); } } void sensar() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); // demora del eco, para cálculo de distancia distance = duration/58.2; }