Étape 9: Contrôle de servos
Exemple 5 - commander un servo avec entrée analogique
Ces deux exemples montrent combien il est facile de contrôler des servos à l’aide d’une entrée analogique. Vous pouvez utiliser n’importe quel périphérique d’entrée analogique vous voulez-j’utiliserai potentiomètre 10 k ohms pour l’exemple de diagramme de câblage. Lorsque vous mettez le pot (et changez sa valeur) le servo se déplace proportionnellement.
Le deuxième exemple de code étend simplement le premier exemple pour contrôler des six servos de six entrées. Ce type de contrôle est vraiment très pratique si vous souhaitez commander plusieurs servos à l’aide de capteurs coude attachés à un gant. Cela fonctionnerait très bien pour contrôler un masque animatronique.
/*
* Exemple 5
* Servo Control
* Cet exemple utilise un servos et l’entrée pour déplacer le servo selon la valeur d’entrée de capteur analogique
* Honus 2010
*/
#include « Servo.h » / / inclure la bibliothèque de servo
Servo servo1 ; crée une instance de l’objet de servo pour contrôler un servo
int analogPin = 0 ; la broche analogique que le capteur est sur
int analogValue = 0 ; la valeur retournée par le capteur analogique
int servoPin = 4 ; Broche de commande de moteur servo
void setup() {}
SERVO1.Attach(servoPin) ; attache le servo sur la broche 9 à l’objet de servo
}
void loop()
{
analogValue = analogRead(analogPin) ; lire l’entrée analogique (valeur comprise entre 0 et 1023)
analogValue = carte (analogValue, 0, 1023, 0, 179) ; carte de la valeur analogique (0 - 1023) à l’angle du servo (0 - 179)
SERVO1.Write(analogValue) ; écrire la nouvelle valeur analogique mappée pour définir la position du servo
Delay(15) ; attend que le servo pour y arriver
}
Exemple 5 a - contrôle 6 servos à l’aide de multiples entrées
/*
* Exemple 5 a
* Servo Control6
* Cet exemple utilise 6 servos et entrées analogiques pour déplacer les servos selon les valeurs d’entrée du capteur
* Honus 2010
*/
#include / / inclure la bibliothèque de servo
Servo servoMotor1 ; crée une instance de l’objet de servo pour contrôler un servo
Servo servoMotor2 ;
Servo servoMotor3 ;
Servo servoMotor4 ;
Servo servoMotor5 ;
Servo servoMotor6 ;
int analogPin1 = 0 ; la broche analogique que le capteur est sur
int analogPin2 = 1 ;
int analogPin3 = 2 ;
int analogPin4 = 3 ;
int analogPin5 = 4 ;
int analogPin6 = 5 ;
int analogValue1 = 0 ; la valeur retournée par le capteur analogique
int analogValue2 = 0 ;
int analogValue3 = 0 ;
int analogValue4 = 0 ;
int analogValue5 = 0 ;
int analogValue6 = 0 ;
int servoPin1 = 4 ; Broche de commande de moteur servo
int servoPin2 = 5 ;
int servoPin3 = 6 ;
int servoPin4 = 7 ;
int servoPin5 = 8 ;
int servoPin6 = 9 ;
void setup() {}
servoMotor1.attach(servoPin1) ; s’adapte sur le servo sur broche 4 l’objet de servo
servoMotor2.attach(servoPin2) ; attache le servo sur la broche 5 à l’objet de servo
servoMotor3.attach(servoPin3) ; attache le servo sur la broche 6 à l’objet de servo
servoMotor4.attach(servoPin4) ; s’adapte sur le servo sur la broche 7 l’objet servo
servoMotor5.attach(servoPin5) ; s’adapte sur le servo sur la broche 8 l’objet de servo
servoMotor6.attach(servoPin6) ; attache le servo sur la broche 9 à l’objet de servo
}
void loop()
{
analogValue1 = analogRead(analogPin1) ; lire l’entrée analogique (valeur comprise entre 0 et 1023)
analogValue1 = carte (analogValue1, 0, 1023, 0, 179) ; carte de la valeur analogique (0 - 1023) à l’angle du servo (0 - 179)
servoMotor1.write(analogValue1) ; écrire la nouvelle valeur analogique mappée pour définir la position du servo
analogValue2 = analogRead(analogPin2) ;
analogValue2 = carte (analogValue2, 0, 1023, 0, 179) ;
servoMotor2.write(analogValue2) ;
analogValue3 = analogRead(analogPin3) ;
analogValue3 = carte (analogValue3, 0, 1023, 0, 179) ;
servoMotor3.write(analogValue3) ;
analogValue4 = analogRead(analogPin4) ;
analogValue4 = carte (analogValue4, 0, 1023, 0, 179) ;
servoMotor4.write(analogValue4) ;
analogValue5 = analogRead(analogPin5) ;
analogValue5 = carte (analogValue5, 0, 1023, 0, 179) ;
servoMotor5.write(analogValue5) ;
analogValue6 = analogRead(analogPin6) ;
analogValue6 = carte (analogValue6, 0, 1023, 0, 179) ;
servoMotor6.write(analogValue6) ;
Delay(15) ; attend que le servo pour y arriver
}