Paso 2: Instale Webcam, conectar Arduino y bosquejo
A continuación concedo la webcam a la parte superior del soporte de montaje de servo tilt. En mi caso, simplemente tuve que quitar (aflojar) el accesorio universal de la base de la parte inferior de la webcam y atornille el dispositivo en uno de los orificios en el soporte de montaje. Dependiendo de tu cámara web, puede que necesite fijar por otros medios (puede siempre utilizar cinta adhesiva si todo lo demás falla!).
Para estabilizar el conjunto, me Coloque en la prensa mini plástico y solucionar el vicio a una superficie plana (es decir, la parte superior de mi escritorio). Una vez más, dependiendo de sus componentes, puede tener otros requisitos. Como la cámara web puede pan y tilt sin caer es a lo único que importa.
Desde aquí, cable los servos a la Arduino como se muestra en las fotos y el diagrama del circuito (hecho con Fritzing). El servo tilt es conectado al pin analógico 0, mientras que el servo pan es conectado al pin analógico 5. Arduino está conectado al ordenador mediante el cable USB y funciona usando la fuente de alimentación externa a través del adaptador de conector de barril incorporado.
Finalmente, para controlar los servos, subo el siguiente bosquejo para el microcontrolador de Arduino con el entorno de desarrollo:
#include < Servo.h >
Bandeja de servo, inclinación;
void setup() {}
pan.Attach (A5);
Tilt.Attach (A0);
Serial.Begin (9600); Abrir el puerto serie.
}
void loop() {}
Si (Serial.available()) {}
byte b = Serial.read();
Mapa de alto 4 bits del byte entrante a la bandeja de rotación en grados.
pan.Write (mapa (b >> 4, 15, 0, 0, 180));
retardo (15);
Mapa baja 4 bits del byte entrante a la rotación en grados de inclinación.
Tilt.Write (mapa (b & 0x0F, 15, 0, 0, 180));
retardo (15);
}
}
El dibujo es muy básico. Se abre el puerto serie y Lee bytes de uno en uno. Cada byte se asume para contener un pan y tilt par de rotación; los 4 bits altos son la rotación de la cacerola (0 a 15 inclusive) y los 4 bits bajos son la rotación de la inclinación (0 a 15 inclusive). Esto proporciona 16 niveles diferentes (es decir, 24) para elegir con respecto a cada dimensión del movimiento y es fácil de codificar la posición de la webcam usando pares de caracteres hexadecimales. Cada servo tiene un rango de 0 a 180 grados. Así, por ejemplo, un par de caracteres hexadecimales de 7 significa 7/15 x 180 (84 grados) en el eje de la cacerola y 10/15 x 180 (120 grados) en el eje de inclinación. Un par de caracteres hexadecimal de 00 codifica una rotación de 0 grados en ambos cacerola e inclinación ejes, mientras que FF codifica un giro completo de 180 grados en tanto pan y tilt de ejes. A continuación se muestra la asignación de cada personaje:
0 : 0 grados
1 : 12 grados
2 : 24 grados
3 : 36 grados
4 : 48 grados
5 : 60 grados
6 : 72 grados
7 : 84 grados
8 : 96 grados
9 : 108 grados
A : 120 grados
B : 132 grados
C : 144 grados
D : 156 grados
E : 168 grados
F : 180 grados
Si necesitaba un control de movimiento de los servos, podría codificar el pan y tilt rotaciones como bytes independientes. En este caso, sin embargo, utilizando un único byte sólo es un medio eficiente de codificar el sistema coordinado para el control de los dos servos y provee rango de movimiento adecuado para una simple webcam.