Control preciso de posicion angular de 0 a 180 grados. Desde el diminuto SG90 hasta el potente MG996R, elige el servo ideal para cada proyecto.
Dos opciones para cada necesidad: el compacto SG90 para proyectos ligeros y el robusto MG996R para aplicaciones de mayor exigencia.
Proyectos ligeros, mecanismos pequenos, aeromodelismo ligero y primeros proyectos de robotica educativa.
Brazos roboticos, proyectos con carga, mecanismos de precision y robotica avanzada con altas exigencias de fuerza.
Ambos servos (SG90 y MG996R) se conectan de forma identica. Tres pasos sencillos para tener tu servo funcionando.
Los servos necesitan 5V. Asegurate de que la shield tiene pila conectada (no solo USB) para suministrar suficiente corriente al servo. Una pila descargada puede provocar movimientos erraticos.
Los servos tienen 3 cables: Marron/Negro = GND, Rojo = VCC (5V), Amarillo/Naranja = Signal. Conecta el cable Signal al pin de servo de la shield (P0, P1 o P2).
MakeCode incluye control de servo integrado sin extensiones. Usa "servo write pin" para enviar un angulo de 0 a 180 grados. No necesitas instalar nada adicional.
| Pin servo | Cable | Descripcion | Conexion en shield |
|---|---|---|---|
| S — Signal | Amarillo / Naranja | Señal PWM de control | P0, P1 o P2 (pin servo) |
| V — VCC | Rojo | Alimentacion 5V | V de la shield (pila necesaria) |
| G — GND | Marron / Negro | Tierra comun | G de la shield |
Codigo listo para usar en MakeCode (JavaScript) y MicroPython. El control de servo esta integrado en MakeCode, sin extensiones.
Son programas de ejemplo que ya funcionan. Copia el código con el botón Copiar y pégalo en la pestaña JavaScript de MakeCode. Así de fácil:
// Servomotor - Control de posicion 0-180 grados // Conectado al pin P0 (servo) // Ir al centro al empezar pins.servoWritePin(AnalogPin.P0, 90) basic.pause(1000) basic.forever(function () { // Girar al boton A: posicion 0 if (input.buttonIsPressed(Button.A)) { pins.servoWritePin(AnalogPin.P0, 0) basic.showIcon(IconNames.ArrowLeft) } // Girar al boton B: posicion 180 if (input.buttonIsPressed(Button.B)) { pins.servoWritePin(AnalogPin.P0, 180) basic.showIcon(IconNames.ArrowRight) } basic.pause(100) })
from microbit import * # Funcion auxiliar para mover servo a un angulo (0-180) def servo_write(pin, angulo): # Convierte angulo a pulso PWM (26 = 0°, 77 = 90°, 128 = 180°) pulso = int(26 + (angulo / 180) * 102) pin.write_analog(pulso) # Ir al centro al empezar servo_write(pin0, 90) sleep(1000) while True: # Boton A: posicion 0 grados if button_a.is_pressed(): servo_write(pin0, 0) display.show(Image.ARROW_W) # Boton B: posicion 180 grados elif button_b.is_pressed(): servo_write(pin0, 180) display.show(Image.ARROW_E) sleep(100)
basic.forever(function () { for (let ang = 0; ang <= 180; ang += 10) { pins.servoWritePin(AnalogPin.P0, ang) basic.pause(50) } for (let ang = 180; ang >= 0; ang -= 10) { pins.servoWritePin(AnalogPin.P0, ang) basic.pause(50) } })
basic.forever(function () { let incl = input.acceleration(Dimension.X) let angulo = Math.map(incl, -1023, 1023, 0, 180) angulo = Math.constrain(angulo, 0, 180) pins.servoWritePin(AnalogPin.P0, angulo) basic.pause(20) })
basic.forever(function () { let seg = (input.runningTime() / 1000) % 60 let ang = Math.map(seg, 0, 59, 0, 180) pins.servoWritePin(AnalogPin.P0, Math.round(ang)) basic.pause(1000) })
let posicion = 90 pins.servoWritePin(AnalogPin.P0, posicion) basic.forever(function () { if (input.buttonIsPressed(Button.A) && posicion > 0) { posicion -= 5 pins.servoWritePin(AnalogPin.P0, posicion) basic.pause(100) } if (input.buttonIsPressed(Button.B) && posicion < 180) { posicion += 5 pins.servoWritePin(AnalogPin.P0, posicion) basic.pause(100) } })
Disponibles en varias tiendas online. Los precios indicados son por unidad. El SG90 y el MG996R se compran por separado.