Skip to main content

Motors

You can use both dc motors and servo motors with Stemi shield.

DC motors

Stemi shield can control up to 2 DC motors (Pumps in IOT).

Library​

For simple usage DigitalIO can be used to turn it on or off, but if you want more precise control you can use PWM.

Motor is controlled with 2 pins M1(IO7, IO8) and M2(IO5/IO6). To make it spin in one direction turn on one pin and turn off the other and vice versa.

Example​

digitalio_example.py
import board
from stemi.digitalio import DigitalInOut, Direction

motorA = DigitalInOut(board.IO5)
motorA.direction = Direction.OUTPUT
motorB = DigitalInOut(board.IO6)
motorB.direction = Direction.OUTPUT

# Setup motor 1
motorA.value = 0
motorB.value = 0

# Clockwise
motorA.value = 1
motorB.value = 0
time.sleep(1)

# Counter-clockwise
motorA.value = 0
motorB.value = 1
time.sleep(1)

# Off
motorA.value = 0
motorB.value = 0
time.sleep(1)
pwm_example.py
import board
from stemi.pwmio import PWMOut

pwmA = PWMOut(board.IO5, duty_cycle=2 ** 16 - 1, frequency=50)
pwmB = PWMOut(board.IO6, duty_cycle=2 ** 16 - 1, frequency=50)

# Off
pwmA.duty_cycle = 0
pwmB.duty_cycle = 0

pwmA.duty_cycle = 0 # 0% duty cycle (off)
time.sleep(1)

pwmA.duty_cycle = int((2 ** 16 - 1) / 2 ) # 50% duty cycle (half on)
time.sleep(1)

pwmA.duty_cycle = 2 ** 16 - 1 # 100% duty cycle (on)
time.sleep(1)

Servo motors​

Library​

Library for servos is provided by Adafruit.

Example​

main.py
import board
from stemi.pwmio import PWMOut
from adafruit_motor import servo

pwm = PWMOut(board.IO10, duty_cycle=2 ** 16 - 1, frequency=50)
my_servo = servo.Servo(pwm)
my_servo.angle = 60