6. BitBotXL motors
Pins for the motors are below.
Pin |
Purpose |
---|---|
pin16 |
Left Motor |
pin8 |
Left Motor Backwards |
pin14 |
Right Motor |
pin12 |
Right Motor Backwards |
6.1. Set up the buggy
- class BitBotXLMotors
buggy = BitBotXL.BitBotXLMotors()
to be able to use the motor methods on the buggy.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
6.2. Duration parameter
None
. If the duration is None
or is not specified the motor will run continuously until another command is sent to it.buggy.forwards(10, duration=5000)
the buggy stops after 5 sec.buggy.forwards(10)
the buggy runs forwards continuously.6.3. Independent motor control
left_motor(speed=1, duration=None)
runs the left motor.right_motor(speed=1, duration=None)
runs the right motor.stop_left()
stops the left motor.stop_right()
stops the right motor.6.3.1. left_motor
- left_motor(speed=1, duration=None)
- Make the left motor run.
speed
values are integers or floats (decimals) from -10 to 10.Defaultspeed
is 1.If speed < 0 the motor turns the wheel backwards.duration
values are integers above 0.Defaultduration
is None.The motor will stop after a given duration in milliseconds.If the duration is None, the motor runs without stopping.
left_motor()
and left_motor(1)
and left_motor(speed=1)
all set the speed to 1.left_motor(2, 1000)
and left_motor(2, duration=1000)
and left_motor(speed=2, duration=1000)
all run the left motor at speed to 2 for 1 sec.left_motor(5)
, runs the left motor at about half speed.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.left_motor(5)
left_motor(2, 5000)
, runs the left motor at speed 2 for 5 sec.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.left_motor(2, 5000)
6.3.2. right_motor
- right_motor(speed=1, duration=None)
- Make the right motor run.
speed
values are integers or floats (decimals) from -10 to 10.Defaultspeed
is 1.If speed < 0 the motor turns the wheel backwards.duration
values are integers above 0.Defaultduration
is None.The motor will stop after a given duration in milliseconds.If the duration is None, the motor runs without stopping.
right_motor()
and right_motor(1)
and right_motor(speed=1)
all set the speed to 1.right_motor(2, 1000)
and right_motor(2, duration=1000)
and right_motor(speed=2, duration=1000)
all run the right motor at speed 2 for 1sec.right_motor(speed=4, duration=3000)
, runs the right motor at speed 4 for 3 sec.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.right_motor(speed=4, duration=3000)
right_motor(-10)
, runs the right motor backwards at full speed.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.right_motor(-10)
6.3.3. stop_left
- stop_left()
- Stop the left motor.
from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.left_motor()
sleep(1000)
buggy.stop_left()
6.3.4. stop_right
- stop_right()
- Stop the right motor.
from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.right_motor(4)
sleep(2000)
buggy.stop_right()
6.4. Stop both motors
- stop()
- Stop both motors.
from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.left_motor(5)
buggy.right_motor(2)
sleep(1500)
buggy.stop()
Tasks
Write code to drive the left motor at speed 2 for 1 second, stop it, run the right motor at speed 2 for 1 sec then stop it.
Write code to drive the right motor at speed 3 while the left motor runs at speed 2 for 3 sec then stop it.
Write code to drive the left motor at speed 3 while the right motor runs at speed 2 for 3 sec then stop it.
Write code that drives the left side faster than the right side then the right side faster the left side so that it zig zags for 5 sec then stop it.
Write code so that the buggy repetitively zig zags forwards for 5 zigs and zags then backwards for 5 zigs and zags.
Modify the zig zag code so that it uses variables for the 2 motor speeds, the number of zig zags forwards and backward, and the time for each zig and zag.
6.5. Straight line control
forwards(speed=1, duration=None)
backwards(speed=1, duration=None)
6.5.1. forward
- forwards(speed=1, duration=None)
- Drive the buggy forward.
speed
values are integers or floats (decimals) from 0 to 10.Defaultspeed
is 1.duration
values are integers above 0.Defaultduration
is None.The motor will stop after a given duration in milliseconds.If the duration is None, the motor runs without stopping.
forwards(10, None)
and forwards(speed=10)
both set the speed to 10.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.forwards(speed=10, duration=5000)
6.5.2. backward
- backwards(speed=1, duration=None)
- Drive the buggy backwards.
speed
values are integers or floats (decimals) from 0 to 10.Defaultspeed
is 1.duration
values are integers above 0.Defaultduration
is None.The motor will stop after a given duration in milliseconds.If the duration is None, the motor runs without stopping.
backwards(10, None)
and backwards(speed=10)
both set the speed to 10.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.backwards(8, 4000)
Tasks
Write code to drive the buggy forward at max speed for 2 sec, stop for 2 sec then repeat.
Write code to drive the buggy forwards and backwards at max speed for 2 sec each, then repeat.
6.6. Turning
left(speed=1, tightness=2, duration=None)
right(speed=1, tightness=2, duration=None)
6.6.1. left
- left(speed=1, tightness=2, duration=None)
- Drive the buggy to the left.
speed
values are integers or floats (decimals) from -10 to 10.speed
values above 0 drive the buggy forwards to the left.speed
values below 0 drive the buggy backwards to the left.Defaultspeed
is 1.tightness
values are best between 1 and 10.Defaulttightness
is 2 (speed ratio).duration
values are integers above 0.Defaultduration
is None.The motor will stop after a given duration in milliseconds.If the duration is None, the motor runs without stopping, until another command is sent to the motor.
left()
and left(1, 2)
and left(speed=1, tightness=2)
all set the speed to 1 with a left turn of tightness 2.left(2, 4, 1000)
and left(2, tightness=4, duration=1000)
and left(speed=2, tightness=4, duration=1000)
all set the speed to 2 with a left turn of tightness 4 for 1sec.left(speed=3, tightness=4, duration=4000)
, drives the buggy forwards at speed 3 while it turns left in a curved path of approximate tightness 4 for 4 secs.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.left(speed=3, tightness=4, duration=4000)
Tasks
Write code to drive the buggy to the left at speed 2 in small circles.
Write code to drive the buggy to the left at speed 5 in medium circles.
Write code to drive the buggy to the left at speed 8 in increasing circles for 5 seconds each. Use a for-loop and a list of tightness values.
6.6.2. right
- right(speed=1, tightness=2, duration=None)
- Drive the buggy to the right.
speed
values are integers or floats (decimals) from -10 to 10.speed
values above 0 drive the buggy forwards to the right.speed
values below 0 drive the buggy backwards to the right.Defaultspeed
is 1.tightness
values are best between 1 and 10.Defaulttightness
is 2.duration
values are integers above 0.Defaultduration
is None.The motor will stop after a given duration in milliseconds.If the duration is None, the motor runs without stopping, until another command is sent to the motor.
right()
and right(1, 2)
and right(speed=1, tightness=2)
all set the speed to 1 with tightness 2.right(2, 4, 1000)
and right(2, tightness=4, duration=1000)
and right(speed=2, tightness=4, duration=1000)
all set the speed to 2 with a right turn of tightness 4 for 1sec.right(speed=2, tightness=4, duration=3000)
, drives the buggy forwards at speed 2 while it turns right in a circular path of tightness 4 for 3 secs.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.right(speed=2, tightness=4, duration=3000)
Tasks
Write code to drive the buggy to the right at speed 4 in small circles.
Write code to drive the buggy to the right at speed 7 in medium circles.
Write code to drive the buggy to the right at speed 10 in circles of increasing size. Use a range function to decrease the tightness every 4 seconds from 10 to 1 in steps of 2.
6.7. Spinning
spin_left(speed=1, duration=None)
spin_right(speed=1, duration=None)
- spin_left(speed=1, duration=None)
- Spin the buggy on the spot, to the left.
speed
values are integers or floats (decimals) from 0 to 10.Defaultspeed
is 1.duration
values are integers above 0.Defaultduration
is None.The motor will stop after a given duration in milliseconds.If the duration is None, the motor runs without stopping, until another command is sent to the motor.
spin_left()
and spin_left(1)
and spin_left(speed=1)
all spin the buggy to the left at speed 1.spin_left(3, 2000)
and spin_left(3, duration=2000)
and spin_left(speed=3, duration=2000)
all spin the buggy to the left at speed 3 for 2 secs.- spin_right(speed=1, duration=None)
- Spin the buggy on the spot, to the right.
speed
values are integers or floats (decimals) from 0 to 10.Defaultspeed
is 1.duration
values are integers above 0.Defaultduration
is None.The motor will stop after a given duration in milliseconds.If the duration is None, the motor runs without stopping, until another command is sent to the motor.
spin_right(2, 4000)
, spins the buggy to the right at speed 2 for 4 secs.from microbit import *
import BitBotXL
# setup buggy
buggy = BitBotXL.BitBotXLMotors()
buggy.spin_right(2, 4000)
Tasks
Write code to spin the buggy to the left at speed 4 for 5 seconds.
Write code to spin the buggy to the right at speed 6 for 3 seconds.
Write code to spin the buggy to the left for 3 seconds then to right for 3 seconds at speed 6.
Write code to drive the buggy in a polygonal path (many straight sides) by combining short drives forwards with short spins.