Paso 6: Circuito esquemático y código!
La foto de arriba es el circuito de Fritzing esquemática de la electrónica utilizada para permitir el movimiento autónomo de DJ Barnyard. La única parte que falta en el esquema es la 9 V batería conexión Arduino Uno. Como se puede ver el esquema (y más adelante en el código), el sensor ultrasónico activará los servos para mover en rotación hacia adelante o hacia atrás mediante el código de Arduino. Observe que el tablero es sólo utilizado para su tren de potencia, por lo tanto un protoboard muy pequeño puede ser utilizado para esta configuración.
Abajo está el código que usé para DJ Barnyard, totalmente se comentó y después de que voy a escribir una breve descripción de su funcionalidad:
/******************************************
PROPÓSITO: Código DJ corralCreado por Chris Perilla
FECHA: 11/04/2014
*******************************************/
#define echoPin 4 / / este es el pin eco
#define triggerPin 2 / / este es el pin de trigger
#include //Include la librería servo
Servo servoLeft; rueda izquierda
Servo servoRight; rueda derecha
/************************set-up function******************************************************************/ void setup() {
pinMode (echoPin, entrada); //set pinmodes
pinMode (triggerPin, salida);
servoLeft.attach(10); señal de servo izquierdo vendrá del pin 10
servoRight.attach(9); señal de servo derecho vendrá del pin 9
}
/*************************main loop************************************************************************/
void loop() {}
servoLeft.write(105); velocidad med en cuanto a la misma velocidad como servo vilros
servoRight.write(0); correr a toda velocidad en la misma dirección
digitalWrite (triggerPin, HIGH); hacer un pulso de 10usec
delayMicroseconds(10);
digitalWrite (triggerPin, bajo);
int distancia = pulseIn(echoPin,HIGH); ahora leer el pulso que se envía por el sensor //pulseIn devuelve la longitud de pulso en usec
flotador distance1 = distancia/58; distancia en cm
Si (distance1 < 25) {//if se detecta un objeto
servoLeft.write(90); ambos motores se paran
servoRight.write(90);
Delay(1000); Espere un segundo
servoLeft.write(20); ajuste ambos servos a toda velocidad en dirección opuesta
servoRight.write(180);
Delay(1000); esperar otro segundo
servoLeft.write(180); entonces sólo el servo izquierdo que gira que gira DJBarnYard
Delay(1500); entonces lazo detrás y repetir
}
}
Descripción del código:
Para el código preliminar definir las patillas eco y activación de los sensores y los servos de izquierda y derecho. Incluir la biblioteca de servo.
Dentro de la configuración de vacía configurar los modos de pin para el Arduino incluyendo los servos con la la función servo de .attach encontró en la biblioteca de Servo.
En cuanto a la sección de bucle vacío empezamos con el código que el Arduino que los servos giran para corral de DJ se está moviendo en la dirección de avance. Puede verse en la parte comentada que un servo se ejecuta más lento que el otro, esto es porque estaba usando dos diferentes marcas de servos. Que no tienen este problema, que hará que su código un poco más consistente. A continuación, utilizamos digitalWrite, delayMicroseconds y pulseIn para crear un pulso de 10 usec del sensor de ultrasonidos y el pulso que se recibe. Luego convertimos la longitud de pulso a distancia en cm. El si declaración comienza, si es de un obstáculo detectado 25 cm o menos lejos entonces pasará a la siguiente; ambos motores se detener, revertir y girará una rueda (servo) para DJ Barnyard. Después de este si se completa la declaración repetirá el bucle principal. Así que, si no hay ningún obstáculo dentro de 25 cm de DJ Barnyard después el si declaración y luego seguirá adelante hasta que se presentan tal un obstáculo.