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

Arduino Leonardo — Ficha de placa · 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

Objetivos

Controlar un servomotor estándar (señal de ancho de pulso) desde la Leonardo utilizando la biblioteca Servo, controlado por un potenciómetro. Identificará los 7 pines PWM de la placa (3, 5, 6, 9, 10, 11, 13, en PWM de 8 bits mediante analogWrite) — la biblioteca Servo genera sus propias impulsiones mediante temporizadores de hardware — y, sobre todo, las reglas de alimentación de un servo.

Material

Código completo

#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);
}

Verificación esperada

El brazo del servo sigue al potenciómetro entre sus dos topes mecánicos (~0° y ~180°). El motor emite un ligero zumbido en posición: es normal en un servo estándar. Alimente el servo desde el 5V de la placa para un único SG90 pequeño; en cuanto se caliente o la placa se reinicie por falta de corriente, pase a una alimentación externa con GND común.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales