🛠 Asservir un servo moteur avec un potentiomètre (PWM)

Arduino Leonardo — Fiche carte · intermediaire · Schéma : IMG-leonardo-intermediaire-6-leonardo-pwm-servo.svg — Leonardo commandant un servo moteur sur la broche PWM 9, potentiomètre sur A0, alimentation externe 5V avec masse commune

Objectifs

Commander un servo moteur standard (signal de largeur d'impulsion) depuis la Leonardo à l'aide de la bibliothèque Servo, piloté par un potentiomètre. Vous repérerez les 7 broches PWM de la carte (3, 5, 6, 9, 10, 11, 13, en PWM 8 bits via analogWrite) — la bibliothèque Servo génère de son côté les impulsions par timers matériels — et surtout les règles d'alimentation d'un servo.

Matériel

Code complet

#include <Servo.h>

Servo monServo;
const uint8_t POT_PIN   = A0;
const uint8_t SERVO_PIN = 9; // broche PWM (3, 5, 6, 9, 10, 11 ou 13)

void setup {
  monServo.attach(SERVO_PIN); // impulse ~50 Hz, 1 a 2 ms
}

void loop {
  int brut = analogRead(POT_PIN);            // 0..1023
  int angle = map(brut, 0, 1023, 0, 180);    // 0..180 degres
  monServo.write(angle);
  delay(15);
}

Vérification attendue

Le bras du servo suit le potentiomètre entre ses deux butées mécaniques (~0° et ~180°). Le moteur bourdonne légèrement en position : normal pour un servo standard. Alimentez le servo depuis le 5V de la carte pour un petit SG90 unique ; dès qu'il chauffe ou que la carte redémarre par manque de courant, passez à une alimentation externe avec GND commun.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels