Paso 8: Codificación de tiempo
Ahora es el momento de escribir el código que permitirá a todo a trabajar juntos. Afortunadamente para usted, le salvó la molestia de hacerlo usted mismo y fui por delante y había preparado para usted.Antes de comenzar la codificación, asegúrese de elegir la Junta correcta del compilador. Estamos utilizando un Arduino Mega 2560. Este código sólo funcionará con dicho Comité, nada más. No funcionará con un Uno o cualquiera de las otras muchas tarjetas Arduino.
Para cambiar la Junta en el compilador de Arduino, vaya a Herramientas -> Tabla -> Arduino Mega 2560 o Mega ADK.
No dude en modificar el código como le parezca.
/ * Cazador de ciervos
Este bosquejo Lee PING))) telémetro ultrasónico y devuelve la
distancia hasta el objeto más cercano en rango. Se enciende luego de una serie de LEDs al máximo
se cambia la distancia.
Además, se inicia un movimiento de servo
Para ello, envía un pulso
en el sensor para iniciar una lectura, entonces escucha un pulso
para volver. Es proporcional a la longitud del pulso regresan
la distancia del objeto al sensor.
El circuito:
* + V conexión de PING))) conectado a + 5V
* Conexión GND de PING))) conectado a tierra
* Conexión de SIG de PING))) conectado al pin digital 7
creado: 28 de julio de 2013
por: Brian J. Mays
modificado por:
*/
#include < Servo.h >
Servo myservo; crear objeto servo para controlar el servo
const int pingPin = 26; / / número de pin del sensor de salida de
agrega en las luces
int rojo = 36; LED conectado al pin digital 9 (pin pwm)
int GrnLED = 38; LED conectado al pin digital 10 (pin pwm)
int BluLED = 40; LED conectado al pin digital 11 (pin pwm)
int LED [3] = {rojo, GrnLED, BluLED}; una matriz para facilitar el ciclo aunque los colores de LED
int deer_counter = 0; Fije el contador de ciervos a cero
void setup() {}
inicializar la comunicación serial:
Serial.Begin(9600);
Sets pasadores como pines de salida (luces)
pinMode (rojo, salida);
pinMode (GrnLED, salida);
pinMode (BluLED, salida);
}
void loop()
{
establecer las variables durante el ping,
y el resultado de la distancia en pulgadas y centímetros:
larga duración, pulgadas, maxInches;
El PING))) es accionado por un pulso alto de 2 o más microsegundos.
Dar un breve impulso de baja previamente para asegurar un pulso limpio alto:
pinMode (pingPin, salida);
digitalWrite (pingPin, LOW);
delayMicroseconds(2);
digitalWrite (pingPin, HIGH);
delayMicroseconds(5);
digitalWrite (pingPin, LOW);
El mismo pin se utiliza para leer la señal del PING))): un alto
pulso cuya duración es el tiempo (en microsegundos) de envío
del ping a la recepción de su eco de un objeto.
pinMode (pingPin, entrada);
duración = pulseIn (pingPin, HIGH);
convertir el tiempo en una distancia
pulgadas = microsecondsToInches(duration);
cambio de la distancia a proteger
maxInches = 72;
Serial.Print(inches);
Serial.Print ("in");
Serial.println();
Si (pulgadas < maxInches)
{
deer_counter = deer_counter + 1;
Serial.Print ("contador de ciervos");
Serial.Print(deer_counter);
girar el servo
myservo.Attach(9); se fija el servo en el pin 9 al objeto servo
Delay(15); espera 15ms para el servo a la posición
Serial.Print ("separar el Servo");
Flash de las luces
para (int fade = 255; fade > = 0; fade = 5) {}
analogWrite(RedLED, fade);
analogWrite(GrnLED, fade);
analogWrite(BluLED, fade);
Delay(50);
}
}
Separar el servo para apagar después de la instrucción IF
myservo.Detach();
Delay(100);
}
microsecondsToInches(long microseconds) largo
{
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-PING-v1.3.pdf
volver microsegundos / 74 / 2;
}
microsecondsToCentimeters(long microseconds) largo
{
La velocidad del sonido es 340 m/s o 29 microsegundos por centímetro.
El ping viaja hacia fuera y hacia atrás, para encontrar la distancia de la
objeto que tomamos la mitad de la distancia recorrida.
volver microsegundos / 29 / 2;
}