суббота, 23 июня 2012 г.

NXT и Python: подключаемся к NXT блоку

Любая Python-программа, которая будет взаимодействовать с Lego-роботом, прежде чем выполнять на нем какие-либо действия, должна подключиться к NXT блоку.
Без этого действия не получиться проинициализировать ни моторы, ни сенсоры.

Еще это действие нужно для того, чтобы указать каким именно NXT блоком вы хотите управлять, если к компьютеру сейчас подсоединено несколько.

В программе, для подключения, сначала нужно импортировать под-модуль locator из модуля nxt.

import nxt.locator
либо сразу конкретную функцию:
from nxt.locator import find_one_brick
Теперь, если имя блока неизвестно, то можно воспользоваться функцией find_one_brick, чтобы подключиться к первому попавшемуся блоку.
b = nxt.locator.find_one_brick()
Теперь можно использовать объект b, отвечающий за работу с NXT блоком. Например, чтобы воспроизвести звуки:
b.play_tone_and_wait(FREQ_E, 500)
Или чтобы начать управлять мотором
mb = nxt.Motor(b, nxt.PORT_B)
mc = nxt.Motor(b, nxt.PORT_C)
Следуют помнить, что имя b, которое было дано объекту NXT блока, выбиралось случайно. В разных программах оно может называться по разному. Это к тому же имеет смысл - позволяет не запутаться в названиях однобуквенных переменных.

Если имя блока известно, то можно сократить время программы, потраченное на поиск этого NXT блока по всем подключенным устройствам. Осуществляется это указанием имени блока в качестве именованного параметра функции find_one_brick:
mybrick = nxt.locator.find_one_brick(name = 'mynxt')
Дальнейшее использование этого объекта в программе ровно такое же, как показано выше.

Кстати, если при импорте в начале программы, имя функции было указано явно, то инициализация блока становится немного проще - не нужно указывать имя модуля:
myNXT = find_one_brick()
или
brick = find_one_brick(name = 'robot')

1 комментарий:

Related Posts Plugin for WordPress, Blogger...