🛠 Piloter un micro-servo avec la bibliothèque Servo

Arduino Nano Every · intermediaire · Schéma : IMG-nano-every-intermediaire-2-nanoevery-servo.svg — Micro-servo de type SG90 alimenté par le 5 V de la Nano Every, signal sur la broche 9, avec les trois fils couleur (signal, VCC, GND) et un bras d'angle annoté

Objetivos

Controlar un micro-servo (tipo SG90) en posición con la biblioteca Servo, barriendo algunos ángulos predefinidos. Recordatorio importante sobre el Nano Every: el PWM está en los pines 3, 5, 6, 9, 10 — usamos el pin 9. El núcleo megaAVR reorganiza los temporizadores, por lo que las bibliotecas que desvían un temporizador (antiguos controladores de servo o codificadores RF bit-bang) pueden requerir una versión actualizada.

Material

Código completo

// Balayage de positions sur servo, broche 9 (broche PWM valide)
#include <Servo.h>

Servo myservo;
const uint8_t BROCHE_SERVO = 9;
const uint8_t positions[] = {0, 45, 90, 135, 180};
uint8_t index = 0;
uint32_t tPrecedente = 0;

void setup {
  myservo.attach(BROCHE_SERVO);   // impulsions 1 a 2 ms
  Serial.begin(9600);
  Serial.println(F("Servo pret"));
}

void loop {
  if (millis - tPrecedente >= 1000) {
    tPrecedente = millis;
    myservo.write(positions[index]);
    Serial.print(F("angle="));
    Serial.println(positions[index]);
    index = (index + 1) % (sizeof(positions) / sizeof(positions[0]));
  }
}

Verificación esperada

El brazo del servo se mueve cada segundo hacia 0°, 45°, 90°, 135°, 180°, y luego comienza de nuevo. El monitor serie muestra el ángulo actual. En el final del recorrido, el servo emite un ligero zumbido (consigna fuera de rango): esto es normal con write en los límites.

Errores frecuentes

> SIN VERIFICAR: comportamiento exacto de la biblioteca Servo en cada temporizador del 4809 según el pin — pruebe antes de un proyecto multi-servo.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales