Tutorial
First, make sure that NXT-Python is installed correctly, see Installation.
This is not a Python tutorial, you must know how to program using Python to use NXT-Python.
First step when writing a NXT-Python script is to find the brick. This is the
role of the nxt.locator.find()
function:
#!/usr/bin/python3
"""NXT-Python tutorial: find the brick."""
import nxt.locator
# Find a brick.
with nxt.locator.find() as b:
# Once found, print its name.
print("Found brick:", b.get_device_info()[0])
# And play a recognizable note.
b.play_tone(440, 250)
Once the brick is found, the nxt.locator.find()
function returns an
object to interact with it: the Brick
object. Here the
script query device information and play a tone.
Now something a little bit more interesting, plug a motor on the port A and try the following script:
#!/usr/bin/python3
"""NXT-Python tutorial: turn a motor."""
import nxt.locator
import nxt.motor
with nxt.locator.find() as b:
# Get the motor connected to the port A.
mymotor = b.get_motor(nxt.motor.Port.A)
# Full circle in one direction.
mymotor.turn(25, 360)
# Full circle in the opposite direction.
mymotor.turn(-25, 360)
Try changing the parameters and see what happen. You can of course drive
several motors, just use the get_motor()
function for
each one.
You can also get information from sensors:
#!/usr/bin/python3
"""NXT-Python tutorial: use ultra-sonic sensor."""
import time
import nxt.locator
import nxt.sensor
# Need to import generic sensors for auto-detection to work.
import nxt.sensor.generic
with nxt.locator.find() as b:
# Find the sensor connected to port 4.
mysensor = b.get_sensor(nxt.sensor.Port.S4)
# Read the sensor in a loop (until interrupted).
print("Use Ctrl-C to interrupt")
while True:
distance_cm = mysensor.get_sample()
print(distance_cm)
time.sleep(0.5)
Digital sensors can be automatically detected as long as the corresponding module is loaded. In the retail set, only the ultra-sound distance sensor is digital, all the other sensors are analog. When using an analog sensor, you must give the sensor class explicitly:
#!/usr/bin/python3
"""NXT-Python tutorial: use touch sensor."""
import time
import nxt.locator
import nxt.sensor
import nxt.sensor.generic
with nxt.locator.find() as b:
# Get the sensor connected to port 1, not a digital sensor, must give the sensor
# class.
mysensor = b.get_sensor(nxt.sensor.Port.S1, nxt.sensor.generic.Touch)
# Read the sensor in a loop (until interrupted).
print("Use Ctrl-C to interrupt")
while True:
value = mysensor.get_sample()
print(value)
time.sleep(0.5)
If you run into problems, you can increase the log level. NXT-Python is using
the logging
module from the standard Python distribution. Try this
script:
#!/usr/bin/python3
"""NXT-Python tutorial: increase log level."""
import logging
import nxt.locator
# Increase the log level, must be done before using any NXT-Python function. See logging
# documentation for details.
logging.basicConfig(level=logging.DEBUG)
with nxt.locator.find() as b:
b.play_tone(440, 250)
You should now have enough information to start playing with NXT-Python. See the API Reference, or the Tips and Tricks pages for more informations.