Servo
Un servomotor se mueve a una posición (un ángulo) y la mantiene. No se controla con un voltaje, sino con el ancho de un pulso que se repite unas 50 veces por segundo: el servo mide cuánto dura ese pulso y se coloca en el ángulo que le corresponde. La placa genera ese pulso por ti.
Paso 1: configurar el pin
Sección titulada «Paso 1: configurar el pin»board.pinMode(9, board.MODES.SERVO);Mover: servoWrite(pin, valor)
Sección titulada «Mover: servoWrite(pin, valor)»valor se interpreta de dos formas según su tamaño:
- Si
valores menor que 544 → se interpreta como grados (normalmente 0–180). - Si
valores 544 o más → se interpreta como microsegundos (el ancho del pulso directamente).
¿Por qué el corte en 544? Porque ningún servo gira a 544°: un número tan grande solo puede ser un ancho de pulso en microsegundos. Ese truco permite que la misma función acepte las dos unidades sin ambigüedad.
board.pinMode(9, board.MODES.SERVO);
board.servoWrite(9, 0); // 0°board.servoWrite(9, 90); // 90° (centro)board.servoWrite(9, 180); // 180°En microsegundos (control directo del pulso):
board.servoWrite(9, 1500); // pulso de 1500 µs (≈ centro en la mayoría de servos)Calibrar el recorrido: servoConfig(pin, minUs, maxUs)
Sección titulada «Calibrar el recorrido: servoConfig(pin, minUs, maxUs)»Cada servo asocia un ancho de pulso a cada extremo de su recorrido. Estos dos parámetros, en microsegundos, le dicen a la placa cuál es ese rango:
minUs: ancho de pulso que corresponde a la posición mínima (0°).maxUs: ancho de pulso que corresponde a la posición máxima (180°).
El rango estándar ronda los 544–2400 µs, pero los servos baratos varían: algunos necesitan ~500–2500, otros ~1000–2000. Calibra estos dos números si tu servo no llega a los extremos, o si zumba/fuerza al final del recorrido.
Tras servoConfig, cuando llamas a servoWrite en grados, la placa reparte 0–180°
dentro de tu rango minUs–maxUs:
// Este servo va de 600 µs (0°) a 2400 µs (180°)board.servoConfig(9, 600, 2400);
board.servoWrite(9, 0); // 0° → pulso de 600 µsboard.servoWrite(9, 180); // 180° → pulso de 2400 µsEjemplo: barrido continuo
Sección titulada «Ejemplo: barrido continuo»board.pinMode(9, board.MODES.SERVO);
let angulo = 0;let paso = 5;
setInterval(() => { board.servoWrite(9, angulo); angulo += paso; if (angulo >= 180 || angulo <= 0) paso = -paso; // rebota en los extremos}, 50);Errores típicos
Sección titulada «Errores típicos»- Alimentar el servo desde la placa: los servos consumen bastante corriente. Si la placa se reinicia o el servo tiembla, usa una fuente externa y une las masas (GND común).
- No calibrar: si no alcanza los extremos o zumba al final, ajusta
minUs/maxUs. - Valores entre 181 y 543: por encima de 180 ya no es un ángulo útil y aún no llega a microsegundos. Usa grados (0–180) o microsegundos (≥ 544).