Servo Moteur sur Arduino

Porteur du projet : Mélodie Souty

Date : 01/2017

Licence : libre !

Présentation

Un servo moteur ressemble à un moteur à courant continue mais en moins puissant, et souvent bridé à un certain angle de rotation (souvent 180°). Concrètement l'intérieur ressemble à cela :
Pour le connecter à l'Arduino, il faut se référer aux couleurs des fils :

Rouge c'est pour l’alimentation positive, soit 5V;

Noir ou marron, pour la masse, le ground (GND);

0range, jaune ou blanc c'est pour m'entrée du signal de commande, donc une pin de sortie au choix.

Connexion à Arduino

Pour utiliser un servo moteur avec Arduino il faut la librairie Servo, souvent déjà pré-installé.
Début du code :

#include <Servo.h> // déclarer l'utilisation de la librairie Servo
Servo monServo; // Création d'un objet Servo
void setup()
{
monServo.attach(2); // Le numéro entre parenthèse correspond à la pin d'entrée sur laquelle mon fil jaune est branché.
}

Si on utilise plusieurs servo, il faut donc créer plusieurs objets Servo au début du programme et ensuite indiquer la pin d'entrée dans le setup().
Ensuite il suffit d'entrer l'angle auquel on veux que le servo tourne :

myservo.write(90); //Le cerveau moteur se place à 90°

On peu utiliser un boucle for pour faire tourner le servo. Voici le code pour un servo d'un angle de 180° :

#include <Servo.h>
Servo myservo; // Création d'un objet Servo
int pos = 0; //Création d'une variable pour la position
void setup() {
myservo.attach(9); // Mon Servo est branché sur la pin 9
}
void loop() {
//Ma variable pos est égale à 0, pour chaque valeur de pos strictement inférieur à 180, cette même valeur deviens l'angle auquel doit être le servo moteur, on attends 15milisecondes, et on ajoute 1 à cette valeur.
for (pos = 0; pos <= 180; pos += 1) {
// in steps of 1 degree
myservo.write(pos);
delay(15);
}
//Ma variable pos est égale à 180, pour chaque valeur de pos strictement supérieur à 0, cette même valeur deviens l'angle auquel doit être le servo moteur, on attends 15milisecondes, et on soustrait 1 à cette valeur.
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
}
}