Get Moving

When you see CodeBot, you can tell right away it’s eager to show off how those motors and wheels work!

Warning

In the following steps, be careful as you run your programs! You’ll need some space to let the ‘bot move around. Also, it’s helpful if your USB cable is long enough to allow a bit of movement.

Of course, your programs can run without the USB cable attached, so feel free to unplug after loading the code onto the ‘bot.

1. Power up a wheel

Enter the following code in CodeSpace to get the LEFT wheel running:

from botcore import *
import time

motors.enable(True)

# Run LEFT motor at 50% power forward for 1 second
motors.run(LEFT, 50)
time.sleep(1.0)

motors.enable(False)

2. Spin in place

The following shows off rotation:

from botcore import *
import time

motors.enable(True)

# Run LEFT motor forward and RIGHT motor backward for 1 second
motors.run(LEFT, 50)
motors.run(RIGHT, -50)
time.sleep(1.0)

motors.enable(False)

3. Drive in a SQUARE

Can you make CodeBot drive in a square?

The code below starts by defining two functions:
  • go_straight() drives in a straight line for one second.
  • turn_right() rotates to the right (clockwise) for half a second.
Take a look at the code below before you run it.
  • How long will the sides of the square be?
  • Will the ‘bot turn proper (90 °) corners?

Note

As you might guess, using motor power levels and time delays is not a very precise way to move the ‘bot. You will need to adjust power levels and time durations to make your square nice and neat.

from botcore import *
import time

def go_straight():
    # Forward 1 sec
    motors.run(LEFT,  50)
    motors.run(RIGHT, 50)
    time.sleep(1.0)

def turn_right():
    # Rotate right (try for 90 deg)
    motors.run(LEFT,  +20)
    motors.run(RIGHT, -20)
    time.sleep(0.5)

motors.enable(True)

# Loop 4 times. A square has 4 sides, right?
for i in range(4):
    go_straight()
    turn_right()

motors.enable(False)

4. Challenge

Consider what you learned in Lights On.

Can you blink an LED every second while driving in a square at the same time?

This sort of multitasking can be challenging when using the time.sleep methods we’ve shown so far. That’s because sleep() is a blocking function - meaning your code has to wait until the sleep is over before doing anything else.

The next lesson introduces an awesome method to overcome this problem: event-driven programming!