Paso 3: código
El código que permite el cambio del umbral de distancia. Así que en otras palabras, hasta qué punto los sensores ver. Yo iré subiendo un nuevo instructivo para mostrar cómo pueden hacer los sensores más precisos utilizando un sensor de temperatura. Finalmente, mi amigo me mostró una manera fresca de depuración muy rápido. Todo lo que hacemos es utilizar un valor booleano y en algunos caso declaraciones. Si el valor booleano es true, entonces la comunicación serial en y comunicar. Si la booleana es false, el programa se ejecute mucho más rápido pero no se comunican.
Se adjunte el archivo .ino, de lo contrario usted puede copiar desde aquí:
/*************************************************************************************************
**************************************************************************************************
Seguimiento de movimiento creado por Calvin Kielas-Jensen
Utilizando un Arduino UNO, busque Instructables.com el diagrama del circuito.
Este script permite dos sensores de la gama ultrasónica seguir movimiento mientras que montado en la parte superior de un servo. El umbral de distancia se puede cambiar pero no debe ser demasiado ajustado como los sensores comenzará a fallar.
Cualquier persona es agradable de utilizar y modificar este código siempre y cuando me den crédito. Gracias por respetar el movimiento de código abierto!
************************************************************************************************** *************************************************************************************************/
#include
Servo myservo;
const int Lin = 10, Rin = 12, Lout = 11, derrota = 13, serv = 9; ajuste sensor pernos y pasador de servo
establecer las variables de duración / / y la distancia resultado en pulgadas de largo, Rduration, Lduration, Rinches, Linches;
umbral de int = 10; Umbral del detector en pulgadas
ángulo de int = 80; Ángulo inicial
Boolean debug = false; Comunicación en serie para la depuración. Establecido en true para la comunicación serial.
void setup() {/ / inicializar la comunicación serial: Si (depuración) {Serial.begin(9600);} myservo.attach(9); //attach servo al pin 9}
void loop() {//Most del código de sensor ha sido tomado desde el código de sensor PING de David Mellis //I modificó un sensor de 4 pines como oppsed al sensor 3 pin / / dar un breve impulso de baja previamente para asegurar un pulso limpio alto: pinMode (derrota, salida); digitalWrite (derrota, LOW); delayMicroseconds(2); digitalWrite (derrota, alto); delayMicroseconds(5); digitalWrite (derrota, baja);
Rduration = pulseIn (Rin, alto); pinMode (patán, salida); digitalWrite (patán, LOW); delayMicroseconds(2); digitalWrite (patán, alto); delayMicroseconds(5); digitalWrite (patán, LOW);
Lduration = pulseIn (Lin, alto);
convertir el tiempo en una distancia Rinches = microsecondsToInches(Rduration); Linches = microsecondsToInches(Lduration); Si (depurar) {Serial.print ("izquierda:"); Serial.Print(Linches); Serial.println ("en"); Serial.Print ("derecho:"); Serial.Print(Rinches); Serial.println ("en"); } follow(); }
largo microsecondsToInches(long microseconds) {}
Según ficha técnica de paralaje para el PING))), hay
73,746 microsegundos por pulgada (es decir, el sonido viaja a 1130 pies por
en segundo lugar). Esto da la distancia recorrida por el ping, saliente
y, por lo que dividimos por 2 para obtener la distancia del obstáculo.
Ver: http://www.parallax.com/dl/docs/prod/acc/28015-PI...
volver microsegundos / 74 / 2; }
void follow() {si (Linches < = umbral || Rinches < = umbral) {si (Linches + 2 < Rinches) {ángulo = ángulo - 2;} Si (Rinches + 2 < Linches) {ángulo ángulo = 2;}} Si (ángulo > 160) {ángulo = 160;} si (ángulo < 0) {ángulo = 0;} myservo.write(angle); }