Maîtriser la bibliothèque ServoTimer2 : Guide simple pour balayage servo
Composants et fournitures
| Composant | Quantité |
|---|---|
| Servomoteur (Tower Pro MG996R ou SG90) | 1 |
| Arduino UNO | 1 |
| Fils de connexion | 1 |
À propos du projet
Introduction
En construisant un robot humanoïde, j'ai eu besoin de faire parler le robot (bibliothèque TMRpcm) tout en contrôlant des servomoteurs. Problème : Servo.h et TMRpcm utilisent tous deux le Timer1 de l'Arduino – ils sont incompatibles.
La solution : utiliser ServoTimer2, qui exploite le Timer2. Malheureusement, peu de tutoriels expliquent son fonctionnement. Voici un guide pratique avec un balayage simple.
Étape 1 : Matériel et assemblage
- Servomoteur (micro servo SG90 ou équivalent)
- Bras de servo collé sur carton rigide (pour visualiser l'angle)
- Fixez le bras sur le servo
Étape 2 : Installer la bibliothèque ServoTimer2
- Téléchargez depuis : github.com/nabontra/ServoTimer2
- Dans l'IDE Arduino : Croquis → Inclure une bibliothèque → Ajouter la bibliothèque .ZIP
- Sélectionnez le fichier ZIP téléchargé
Étape 3 : Câblage simple
- Fil rouge (VCC) → 5V Arduino
- Fil marron/noir (GND) → GND Arduino
- Fil orange/jaune (Signal) → Broche numérique 6
Étape 4 : Le code – Comparaison Servo.h vs ServoTimer2
Avec la bibliothèque standard Servo.h, on écrit l'angle en degrés :
#include
Servo servo1;
void setup() { servo1.attach(6); }
void loop() {
servo1.write(0); delay(1000);
servo1.write(90); delay(1000);
servo1.write(180); delay(1000);
}
Avec ServoTimer2, on doit spécifier la largeur d'impulsion (pulse width) en microsecondes :
- 750 µs ≈ 0° (minimum)
- 1500 µs ≈ 90° (centre)
- 2250 µs ≈ 180° (maximum)
Note : ces valeurs varient selon les servos. Testez sans risque – cela n'endommage pas le servo.
#include "ServoTimer2.h"
ServoTimer2 servo1;
void setup() { servo1.attach(6); }
void loop() {
servo1.write(750); delay(1000); // 0°
servo1.write(1500); delay(1000); // 90°
servo1.write(2250); delay(1000); // 180°
}
Étape 5 : Alimentez et expérimentez
Alimentez l'Arduino, observez les angles réels pour chaque valeur d'impulsion, et ajustez selon votre servo. Bon bricolage !
Codes complets
Balayage avec Servo.h (standard)
#include
Servo servo1;
void setup() { servo1.attach(6); }
void loop() {
servo1.write(0); delay(1000);
servo1.write(90); delay(1000);
servo1.write(180); delay(1000);
}
Balayage avec ServoTimer2
#include "ServoTimer2.h"
ServoTimer2 servo1;
void setup() { servo1.attach(6); }
void loop() {
servo1.write(750); delay(1000);
servo1.write(1500); delay(1000);
servo1.write(2250); delay(1000);
}
Schéma
Code source sur GitHub : Arduino-ServoTimer2-basic-sweep
Processus de fabrication
- Construire un robot Arduino piloté par Raspberry Pi – Guide pas à pas
- Simple Pi Robot – Construire un rover autonome 2 roues motrices avec Raspberry Pi
- Le Guide Complet de la Production de Fibre de Verre
- Utilisation de realloc() en C : Syntaxe, bonnes pratiques et exemple
- Maîtriser la fonction free() en C : Guide pratique et exemple
- Utiliser une thermistance facilement : Guide étape par étape Arduino
- Créer une animation de coupe progressive dans SolidWorks – Tutoriel Étape par Étape
- Construire un Prototype Gagnant : Guide Étape par Étape pour le Développement Rapide de Produits
- Maîtriser les techniques de la rectifieuse d'outils : guide pratique