The MonkMakes Servo for micro:bit board provides a really easy way to attach up to three servomotors to a BBC micro:bit. The board requires a power supply or battery pack to provide 5 or 6V to the servomotors. It includes a voltage regulator that will supply 3V back to the micro:bit, so that you don’t have to power it separately.
Monk Makes Servo Features
- Header pins for three servo motors
- Up to 2A total can be supplied to the servo motors
- Regulated 3V output to power your micro:bit
- Polarity protection for the servomotors
- Electrolytic reservoir capacitor for the servomotors
- 1kΩ series resistors to the control signals to prevent accidental sort-circuits of the micro:bit’s output pins
- Orange LED to indicate that the Servo for micro:bit board has power
The picture below shows a typical setup using the Servo for micro:bit board.
The following connections have been made:
- 3 x servomotors plugged into header pins. These need to be the right way around, with the control signal (yellow or orange wire) to the left (pins marked c).
- Alligator clip lead from GND on the micro:bit to GND on the Servo for micro:bit board.
- Optional alligator clip lead from 3V on the micro:bit to 3V on the Servo for micro:bit board. You only need this if you want to power the micro:bit from the same battery pack as the servomotors. If you want to power the micro:bit over USB or the JST battery connector then you do not need this connection.
- Alligator clip leads between P0, P1, P2 on the micro:bit to the Servo for micro:bit board. These need to match up with the servomotors you are using, so if you only need the board for one servomotor, then just connect P0 on the micro:bit to P0 on the Servo for micro:bit and make sure that there is a servomotor attached to the header pins marked 0.
- Power to the screw terminal on the Servo for micro:bit. Typically this will be a 4xAA battery pack or other power supply. Make sure that the positive lead goes to the screw terminal marked with a +
To check that everything is working, this Blocks code project will get you started. Flash it onto your Servo for micro:bit and the servo arms should all start waggling in a random manner. You can see a video of this in action here.
The servo write pin block allows you to set the angle of the servomotor’s arm between 0 and 180 degrees. Note that servomotors, will not usually travel a full 180 degrees so you may find the actual range is more like 10 to 170 degrees.
The following MicroPython example will move the servo one way or another when you press the A and B buttons.
def set_servo_angle(pin, angle):
duty = 26 + (angle * 102) / 180
angle = 90
if button_a.was_pressed() and angle >= 10:
angle -= 10
if button_b.was_pressed() and angle <= 170:
angle += 10
if button_a.is_pressed() and button_b.is_pressed():