🛠 Piloter un servo moteur avec le PWM et un potentiomètre
Objectifs
Piloter un servomoteur avec la bibliothèque Servo sur une broche PWM du Micro (3, 5, 6, 9, 10, 11 ou 13) et le commander au potentiomètre, en gérant correctement l'alimentation : le Micro se nourrit sur Vin (7-12 V) ou l'USB, et la broche 3V3 ne fournit que 50 mA.
Matériel
- 1 Arduino Micro
- 1 servomoteur type SG90/MG90S (signal orange, +5V rouge, GND marron)
- 1 potentiomètre 10 kΩ sur A0 (curseur vers A0, extrémités 5V/GND)
- Alimentation externe 5 V pour le servo si plusieurs servos, ou Vin 7-12 V sur le Micro ; GND commun impératif
Code complet
// Servo sur broche PWM 9, commande par potentiomètre sur A0.
#include <Servo.h>
const uint8_t KNOB = A0;
const uint8_t PIN_SERVO = 9; // broche PWM : 3,5,6,9,10,11,13
Servo monServo;
void setup {
monServo.attach(PIN_SERVO); // signal PWM 50 Hz
Serial.begin(9600);
}
void loop {
int brut = analogRead(KNOB); // 0..1023
uint8_t angle = map(brut, 0, 1023, 0, 180);
monServo.write(angle);
Serial.println(angle);
delay(20);
}
Vérification attendue
Le bras du servo suit le potentiomètre entre 0 et 180 degrés, sans à-coups. En fin de course, le servo bourdonne légèrement puis se tait une fois l'angle maintenu.
Erreurs fréquentes
- Alimenter un gros servo directement depuis le 5 V du Micro branché sur l'USB : les pics de courant font redémarrer la carte (la polyfuse USB coupe à 500 mA) ; utiliser une alimentation séparée à GND commun.
- Oublier le GND commun entre servo et Micro : le servo vibre ou ne bouge pas.
- Relier le servo au 3V3 : cette broche est limitée à 50 mA, insuffisant.
- Utiliser une broche non PWM pour le signal : la bibliothèque Servo fonctionne aussi sur d'autres broches, mais rester sur une broche PWM simplifie le dépannage.
- Attendre un signal analogWrite classique : le Servo émet des impulsions calibrées, ne pas mélanger avec analogWrite sur la même broche.
Autres tutoriels pour cette carte
- Faire clignoter la LED embarquée (et comprendre les LED TX/RX)
- Lire un bouton avec une résistance de pull-up interne
- Lire un capteur analogique sur le convertisseur 10 bits
- Transformer le Micro en clavier USB (HID) avec bouton de sécurité
- Pont Serial vers Serial1 : passerelle USB vers TTL
- Sortir des sentiers : registres AVR et interruption externe
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino