La librairie
Pour piloter ces moteurs, l'utilisation de la libraire <Servo.h> facilite grandement la chose.Parmi les fonctions proposées par la librairie servo.h, deux sont les plus utilisées :
- attach(pin) : permet "d’attacher" le servomoteur au Pin d’asservissement
- write(angle) : envoi le servomoteur à l’angle spécifié
Ces quatre autres fonctions pourront être utiles pour gérer plus finement les servomoteurs :
- writeMicroseconds(us) : permet d’ajuster les positions limites si votre servomoteur n’est pas standard.
- read(pin) : permet de lire l’angle du servomoteur
- attached(pin) : permet de savoir si servomoteur est attaché au Pin spécifié
- detach(pin) : pour détacher votre servomoteur du Pin spécifié
Le câblage
Les servomoteurs de positionnement angulaire permettent de déplacer précisément un objet dans une plage de 0° à 180° (le plus courant). Le branchement est presque toujours le même et se fera à l’aide de 3 fils dont voici les principales couleurs que vous pourrez rencontrer :
- Rouge : alimentation +5V
- Noir : commun à relier au Pin GND de la carte de développement
- Orange, jaune ou blanc : signal de positionnement
Câblage du servomoteur |
Le code
#include <Servo.h>
Servo myServo;
const int SERVO_POSITION_MAX = 180;
const int SERVO_POSITION_MIN = 0;
int myServoPosition = 0;
void setup() {
Serial.begin(9600); //Start the serial port
while(!Serial){;}
myServo.attach(9); //Servo attaches to pin 9 (PWM)
//Small break 250 ms
delay(250);
}
void loop() {
//Reach the new position
myServo.write(myServoPosition);
myServoPosition++;
//If position > 180 deg, return to '0'
if(myServoPosition > SERVO_POSITION_MAX){
myServoPosition = SERVO_POSITION_MIN;
myServo.write(myServoPosition);
//Delay to return to '0'
delay(1000);
}
//Print the actual position
Serial.println(myServo.read());
//Delay 30ms
delay(30);
}