Dans l’esquisse, il y a code d’initialisation pour inclure la bibliothèque servo, déclarer des variables, définir les broches sont en utilisation etc. et les fonctions qui sont appelées dans les servoCheck() pour exécuter le code qui repositionne les servos.
La ligne #include suivante est le biggy. Il apporte dans le code de servo intelligent :
#include / / inclut arduino standard servo classe (la bibliothèque)
La ligne suivante consiste à définir un retard (5 millisecondes) donc le servo n’est pas trop souvent être réajusté. Sans retard, les servos sont étant réajustés en permanence, et cela peut conduire à l’épuisement. Si le délai est trop long, si, les servos devient saccadée et lent à réagir.
int delay_val = 5 ; assigne le décalage d’incrément de servo (délai entre l’application de valeurs) pour les deux servos
La servocommande est basé sur des signaux d’entrée analogique sous forme de tensions d’entrée variables, dont l’Arduino convertit les valeurs numériques (en d’autres termes les numéros!) et puis le code ci-dessous est utilisé pour manipuler ces nombres et de créer des sorties numériques pour repositionner les servos si les apports sont variables. Le code dans la bibliothèque de servo.h réalise toutes les tâches rébarbatives. Le code que vous devez écrire vraiment envoie les valeurs de données très simple aux fonctions de la bibliothèque pour tous y arriver.
Les tensions d’entrée ont été créées à l’aide de simples résistances variables (potentiomètre), un pour chaque servo. Potentiomètres (pots) sont faciles à recycler de vieux kit électrique, tels que de vieilles radios. La valeur de la résistance n’est pas particulièrement importante. En général, ils sont 0-10 k Ohms. Pour chaque pot, deux offre pôles sont reliés à la masse (Terre) et 5V respectivement et le signal de sortie est connectée à une broche analogique de l’Arduino.
Le schéma de circuit Voir l’étape 10. C’est très simple.
Ce bit déclare la première servo...
SERVO 1
Servo myservo ; Créez l’objet servo pour contrôler un servo
const int potPin1 = 0 ; déclare quelle broche analogique est utilisé pour connecter la sortie analogique de tension variable de potentiomètre 1 (servo de contrôles 1)
int valPot1 ; variable pour lire la valeur de la broche analogique pour servo 1
FIN SERVO 1
Ce bit déclare le second servo...
SERVO 2
Servo myservo2 ; créer le second objet de servo pour contrôler un second servo
const int potPin2 = 1 ; déclare quelle broche analogique est utilisé pour connecter la sortie analogique de tension variable de potentiomètre 2 (servo 2 de contrôles)
int valPot2 ; variable pour lire la valeur de la broche analogique pour servo 2
SERVO DE FIN 2
SERVOS
void setup() {}
Une fois que les servos (myservo, myservo2) ont été déclarés, les connexions de goupille de Arduino sont définies :
fixer les servos
myservo.Attach(5) ; attache le servo sur la broche 5 à l’objet de servo
myservo2.Attach(9) ; servo deuxième s’attache à la broche 9 au deuxième objet de servo
}
Une fois que les servos ont été définis, le « servoCheck() » fonction a été défini. Cela s’appelle en fonction standard de l’Arduino 'Boucle ()' pour vérifier pour les entrées et convertir ces sorties qui contrôlent les servos et traduire ce globe oculaire mouvement à plusieurs reprises.
void servoCheck() {}
servocommandes
Servo 1---
valPot1 = analogRead(potPin1) ; lit la valeur du potentiomètre (valeur comprise entre 0 et 1023)
La variable valPot1 prend le signal d’entrée de l’un de le potentiomaters. La commande analogRead() est utilisée pour cela. Il raconte l’Arduino pour convertir la tension d’entrée analogique crue (dans la plage 0 à 5 volts) en une valeur numérique comprise entre 0 et 1023.
Le code de servo doit d’entrée des valeurs entre 0 et 179. Il utilise ces valeurs pour définir sa position. une entrée de 0 postes l’axe du servo à-90 degrés et 179 il fixera à 90 degrés. Les plages numériques (0 - 1023 et 0-179) doivent être mises à l’échelle. Cela se fait à l’aide de la fonction de () carte Arduino. Cela prend les valeurs numériques (0 à 1023) livrés par la fonction analogRead() et eux peut évoluer vers un nombre compris entre 0 une 179.
valPot1 = carte (valPot1, 50, 1000, 0, 179) ; redimensionnez-la pour l’utiliser avec le servo (valeur comprise entre 0 et 180)
myservo.Write(valPot1) ; définit la position du servo selon la valeur à l’échelle
Delay(delay_val) ;
---fin de servo 1
C’est la même chose pour le second servo
// servo 2 ------------------------
valPot2 = analogRead(potPin2) ; lit la valeur du potentiomètre (valeur comprise entre 0 et 1023)
digitalWrite (ledPinJoystick, HIGH) ;
valPot2 = carte (valPot2, 50, 1000, 179, 0) ; redimensionnez-la pour l’utiliser avec le servo (valeur comprise entre 0 et 180)
myservo2.Write(valPot2) ; définit la position du servo selon la valeur à l’échelle
Delay(delay_val) ;
---fin de servo 2
fin des servocommandes * /
}
Et c’est tout, que c’est