Etape 2: Monter la Webcam, connecter l’Arduino et télécharger Sketch
Ensuite, j’ai fixer la webcam vers le haut du support de montage du servo tilt. Dans mon cas, j’ai dû tout simplement enlever (dévisser) la fixation universelle de base du bas de la webcam et visser l’appareil dans un des trous du support de montage. Selon votre webcam, vous devrez peut-être joindre par un autre moyen (vous pouvez toujours utiliser un ruban adhésif si tout cela échoue!).
Pour stabiliser l’ensemble, j’ai placer dans mini-l’étau de plastique et Difficulté l’étau sur une surface plane (c'est-à-dire le haut de mon bureau). Encore une fois, selon vos composants, vous pouvez avoir d’autres exigences. Aussi longtemps que la webcam peut pan et tilt sans tomber, c’est tout ce qui compte.
De là, j’ai fil des servos à l’Arduino comme le montre les photos et le schéma de câblage (effectuée à l’aide de Fritzing). Le servo d’inclinaison est connecté à la broche analogique 0, tandis que le servo de pan est connecté à la broche analogique 5. L’Arduino est connecté à l’ordinateur hôte en utilisant le câble USB et alimenté par l’alimentation externe par le biais de l’adaptateur de prise Canon intégré.
Enfin, pour contrôler les servos, j’ai télécharger le croquis suivant à microcontrôleur de l’Arduino à l’aide de l’environnement de développement :
#include < Servo.h >
Panoramique de servo, inclinaison ;
void setup() {}
Pan.Attach (A5) ;
Tilt.Attach (A0) ;
Serial.Begin (9600) ; Ouvrir le port série.
}
void loop() {}
Si {(Serial.available())
b octets = Serial.read() ;
Carte 4 bits de poids fort d’octet entrant à pan de rotation en degrés.
Pan.Write (carte (b >> 4, 0, 15, 0, 180)) ;
retard (15) ;
Carte 4 bits de poids faibles d’octets entrants de rotation en degrés d’inclinaison.
Tilt.Write (carte (b & 0x0F, 0, 15, 0, 180)) ;
retard (15) ;
}
}
L’esquisse est très basique. Il ouvre le port série et lit les octets un à la fois. Chaque octet est censé contenir un pan et tilt paire de rotation ; les 4 bits de poids fort sont la rotation panoramique (0 à 15 ans inclus) et les 4 bits de poids faibles sont la rotation de l’inclinaison (0 à 15 ans inclusivement). Ce qui donne 16 niveaux différents (soit 24) au choix à l’égard de chaque dimension du mouvement et le rend facile à coder la position de la webcam à l’aide de paires de caractères hexadécimaux. Chaque servocommande a une plage de 0 à 180 degrés. Ainsi, par exemple, une paire de caractères hexadécimaux de 7 a signifie 7/15 x 180 (84 degrés) sur l’axe de la poêle et les 10/15 x 180 (120 degrés) sur l’axe d’inclinaison. Une paire de caractères hexadécimaux 00 encode une rotation de 0 degré sur les deux pan et axes d’inclinaison, tandis que FF encode une rotation complète de 180 degrés sur les pan et tilt axes. Le mappage de chaque caractère est indiqué ci-dessous :
0 : 0 degrés
1 : 12 degrés
2 : 24 degrés
3 : 36 degrés
4 : 48 degrés
5 : 60 degrés
6 : 72 degrés
7 : 84 degrés
8 : 96 degrés
9 : 108 degrés
A : 120 degrés
B : 132 degrés
C : 144 degrés
D : 156 degrés
E : 168 degrés
F : 180 degrés
Si j’avais besoin d’un contrôle précis des mouvements des servos, je pourrais encoder le pan et inclinez rotations qu’octets séparés. Dans ce cas, toutefois, à l’aide d’un seul octet seulement constitue un moyen efficace de codage du système de coordonnées pour commander les deux servos et fournit la gamme motion adéquate pour une simple webcam.