servo-sweep.ino

Arduino Nano (Classic, ATmega328P) · Archivo : servo-sweep.ino · Lenguaje : Arduino · Uso : Faire balayer un servo et suivre la position

El servo de posición es el actuador didáctico por excelencia: este barrido 0-180° en el pin 10 muestra attach/write y la lógica de rebrote. La librería Servo pilota la señal de 50 Hz en cualquier pin del Nano.

Hardware

Un Arduino Nano clásico (ATmega328P a 16 MHz, formato DIL de 30 patillas para breadboard, USB mini-B, lógica de 5 V, pin RESET abajo a la izquierda). Arduino Nano, servo tipo SG90, alimentación externa de 5 V si el movimiento va cargado (el USB solo limita a ~500 mA).

Cableado

Servo: marrón/negro→GND (común con el Nano), rojo→+5 V externo, naranja→D10. Masa común obligatoria.

Funcionamiento

Servo::write(angle) convierte el ángulo en ancho de impulso (1 ms = 0°, 2 ms = 180°) vía el timer. Un paso de 5° cada 20 ms da movimiento fluido sin tirones.

Ejecución

En el IDE de Arduino, selecciona la placa Arduino Nano y el procesador ATmega328P, elige el puerto serie y carga. El rail de 5 V de la placa conviene a sensores de 5 V; si no, usa 3,3 V en pines compatibles.

Variantes

Sustituye el barrido por seguimiento de potenciómetro (map(analogRead, 0, 1023, 0, 180)) o limita el recorrido mecánico para evitar crujidos.

servo-sweep.ino

// Balayage de servo 9g avec la bibliotheque Servo (Arduino Nano).
// Alimentez le servo par une source externe si plusieurs mouvements.
#include <Servo.h>

Servo myservo;
const int BROCHE = 10;

int angle = 0;
int sens = 1;
const int PAS = 5;          // degres par iteration
const unsigned long PAUSE = 20; // ms entre pas

void setup() {
  myservo.attach(BROCHE);   // impulse 1 a 2 ms par defaut
  Serial.begin(9600);
}

void loop() {
  angle += sens * PAS;
  if (angle >= 180) sens = -1;
  if (angle <= 0) sens = 1;
  myservo.write(angle);
  Serial.print(F("angle="));
  Serial.println(angle);
  delay(PAUSE);
  // myservo.read() n'existe pas : un servo de position ne renvoie
  // pas sa position. Pour la mesurer, capteur potentiometre ou
  // servo en rotation continue codeur.
}

← Volver a la ficha