Любая 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')
Скажите, а эта статья так же относится и к Python-3
ОтветитьУдалить