• Иногда лучшие алгоритмы создаются на бумажке. Запрограммировать их — уже не такая сложная и интересная вещь.

Класс EV3 Motor (Мотор)

http://smallbasic.com/smallbasic.com/img/object_32.pngMotor

Класс Motor (Мотор) обеспечивает управление моторами, подключенными к блоку EV3. Моторы могут использоваться не только как исполнительные устройства, но и как датчики вращения или угла поворота. Методы класса Motor совместимы со средними и большими типами моторов набора EV3, а также с моторами набора NXT и не делает различий при работе с ними.

Для методов класса Motor необходимо указывать имена одного или нескольких портов, к которым подключены моторы, с которыми планируется работа например: «A», «BC», «ABD», имена нескольких портов должны указываться в алфавитном порядке. Для дополнительных блоков EV3, подключенных к главному блоку по USB кабелю порты моторов указываются так: «3BC», «2A», в этом случае в одной команде можно указывать только порты моторов одного блока.

Угол поворота мотора должен иметь всегда только положительное значение, в случае отрицательного – знак игнорируется. Если мотор должен вращаться в обратном направлении – необходимо изменять знак у значения параметра speed (скорость).

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

Методы класса Motor:

http://smallbasic.com/smallbasic.com/img/method_16.pngStop

Motor.Stop(ports, brake)

Остановить один или несколько моторов. Команда завершает так же все запланированные или незавершенные команды управления этими моторами.

ports — Имена портов моторов

brake — Режим торможения моторов: «True», если необходимо удерживать положение осей моторов после остановки, иначе — «False».

http://smallbasic.com/smallbasic.com/img/method_16.pngStart

Motor.Start(ports, speed)

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

ports — Имена портов моторов

speed — Скорость вращения мотора: от -100 (полный назад) до 100 (полный вперед).

http://smallbasic.com/smallbasic.com/img/method_16.pngStartPower

Motor.StartPower(ports, power)

Запустить один или несколько моторов с указанной мощностью или изменить мощность уже запущенных моторов на указанную.

ports — Имена портов моторов

power — Мощность от -100 (максимум при вращении назад) до 100 (максимум при вращении вперед).

http://smallbasic.com/smallbasic.com/img/method_16.pngStartSync

Motor.StartSync(ports, speed1, speed2)

Синхронно запускает два мотора с указанными скоростями в режиме контроля за их вращением. Если один мотор будет испытывать перегрузку, которая замедлит его скорость, второй мотор пропорционально замедлится, чтобы сохранить пропорциональную синхронность вращения (если угловая скорость одного мотора уменьшится в полтора раза относительно заданной ему, то угловая скорость второго — тоже уменьшится в полтора раза). Может использоваться для того, чтобы робот мог двигаться по изогнутой линии или разворачиваться на месте используя два мотора с разными скоростями вращения.

ports — Имена двух портов для моторов (например «AB» или «BD»).

speed1 — Скорость вращения первого мотора (мотора с первым по алфавиту номером порта): от -100 (полный назад) до 100 (полный вперед)

speed2 — Скорость вращения второго мотора (мотора со следующим за первым по алфавиту номером порта): от -100 (полный назад) до 100 (полный вперед)

http://smallbasic.com/smallbasic.com/img/method_16.pngGetSpeed

Motor.GetSpeed(port)

Получаеть текущую скорость мотора.

port — Имя порта мотора

Возвращает: Текущая скорость вращения мотора в диапазоне от -100 до 100.

http://smallbasic.com/smallbasic.com/img/method_16.pngIsBusy

Motor.IsBusy(ports)

Проверяет, свободны или нет один или несколько моторов. Если контроллеры моторов ещё не завершили выполнение команд, значит, моторы заняты.

ports — Имена портов моторов

Возвращает: «True» если хотя бы один из моторов не освободился, «False» — в противном случае.

http://smallbasic.com/smallbasic.com/img/method_16.pngSchedule

Motor.Schedule(ports, speed, angle1, angle2, angle3, brake)

Запускает один или несколько моторов с указанной скоростью и с возможностью плавного разгона до заданной скорости, а затем — плавного замедления перед остановкой. Скорость вращения моторов регулируется в пределах суммарного угла поворота моторов таким образом: в пределах угла angle1 моторы разгоняются до указанной скорости, затем, в пределах угла angle2 — поддерживают заданную скорость, и наконец, в пределах угла angle3 — замедляются до полной остановки. Полный угол, на который повернётся каждый мотор — это сумма углов angle1 + angle2 + angle3. Метод возвращает управление в программу сразу и не ждет, пока моторы выполнят команду до конца. Для проверки окончания отработки команды, используйте метод IsBusy(). Чтобы дождаться момента, когда моторы закончат выполнение команды — используйте метод Wait().

ports — Имена портов моторов

speed — Скорость вращения моторов: от -100 (полный назад) до 100 (полный вперед)

angle1 — часть общего угла поворота моторов (в градусах), в пределах которой моторы разгоняются

angle2 — часть общего угла поворота моторов (в градусах), в пределах которой моторы поддерживают указанную скорость

angle3 — часть общего угла поворота моторов (в градусах), в пределах которой моторы плавно замедляются до полной остановки

brake — Режим торможения моторов: «True», если необходимо удерживать положение осей моторов после остановки, иначе — «False».

http://smallbasic.com/smallbasic.com/img/method_16.pngSchedulePower

Motor.SchedulePower(ports, power, angle1, angle2, angle3, brake)

Запускает один или несколько моторов с указанной мощностью и с возможностью плавного наращивания мощности до заданной, а затем — плавного уменьшения мощности перед остановкой. Мощность моторов регулируется в пределах суммарного угла поворота моторов таким образом: в пределах угла angle1 моторы плавно наращивают мощность до указанной, затем, в пределах угла angle2 — поддерживают заданную мощность, и наконец, в пределах угла angle3 — плавно уменьшают мощность до полной остановки. Полный угол, на который повернётся каждый мотор — это сумма углов angle1 + angle2 + angle3. Метод возвращает управление в программу сразу и не ждет, пока моторы выполнят команду до конца. Для проверки окончания отработки команды, используйте метод IsBusy(). Чтобы дождаться момента, когда моторы закончат выполнение команды — используйте метод Wait().

ports — Имена портов моторов

power — Мощность моторов: от -100 (максимум при вращении назад) до 100 (максимум при вращении вперед)

angle1 — часть общего угла поворота моторов (в градусах), в пределах которой моторы разгоняются

angle2 — часть общего угла поворота моторов (в градусах), в пределах которой моторы поддерживают указанную скорость

angle3 — часть общего угла поворота моторов (в градусах), в пределах которой моторы плавно замедляются до полной остановки

brake — Режим торможения моторов: «True», если необходимо удерживать положение осей моторов после остановки, иначе — «False».

http://smallbasic.com/smallbasic.com/img/method_16.pngScheduleSync

Motor.ScheduleSync(ports, speed1, speed2, angle, brake)

Поворачивает два мотора синхронно на определенное количество градусов. Если один из двигателей нагружен или что-то препятствует его вращению, второй двигатель пропорционально замедлится или вообще остановится. Это команда особенно полезна для колесных или гусеничных роботов с независимым приводом на каждое колесо или гусеницу — для обеспечения возможности сохранить траекторию движения. Угол, на который будет повернут более медленный мотор зависит от его скорости:  он будет меньше заданного значения угла пропорционально отношению заданной для этого мотора скорости к скорости более быстрого мотора. Метод возвращает управление в программу сразу и не ждет, пока моторы выполнят команду до конца. Для проверки окончания отработки команды, используйте метод IsBusy(). Чтобы дождаться момента, когда моторы закончат выполнение команды — используйте метод Wait().

ports — Имена двух портов моторов (например «AB» или «BD»).

speed1 — Скорость вращения первого мотора (мотора с первым по алфавиту номером порта): от -100 (полный назад) до 100 (полный вперед)

speed2 — Скорость вращения второго мотора (мотора со следующим за первым по алфавиту номером порта): от -100 (полный назад) до 100 (полный вперед)

angle — Угол поворота мотора (в градусах), для которого задана наибольшая скорость вращения (для другого мотора угол будут меньше — пропорционально отношению его скорости к скорости более быстрого мотора).

brake — Режим торможения моторов: «True», если необходимо удерживать положение осей моторов после остановки, иначе — «False».

http://smallbasic.com/smallbasic.com/img/method_16.pngResetCount

Motor.ResetCount(ports)

Сбрасывает счетчик оборотов одного или нескольких моторов в значение 0.

ports — Имена портов для моторов (например «A» или «BD»).

http://smallbasic.com/smallbasic.com/img/method_16.pngGetCount

Motor.GetCount(port)

Получает текущие данные счетчика оборотов указанного мотора. Счетчик оборотов работает даже если мотор вращается не по команде блока EV3, а в результате воздействия внешней силы. Таким образом, мотор может быть использован как датчик вращения или угла поворота.

port — Имя порта мотора

Возвращает: Текущее значение счетчика оборотов мотора в градусах.

http://smallbasic.com/smallbasic.com/img/method_16.pngMove

Motor.Move(ports, speed, angle, brake)

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

ports — Имена портов моторов (например «A» или «BD»).

speed — Скорость вращения моторов: от -100 (полный назад) до 100 (полный вперед)

angle — Угол поворота моторов (в градусах)

brake — Режим торможения моторов: «True», если необходимо удерживать положение осей моторов после остановки, иначе — «False».

http://smallbasic.com/smallbasic.com/img/method_16.pngMovePower

Motor.MovePower(ports, power, angle, brake)

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

ports — Имена портов моторов (например «A» или «BD»).

power — Мощность моторов: от -100 (максимум при вращении назад) до 100 (максимум при вращении вперед)

angle — Угол поворота моторов (в градусах)

brake — Режим торможения моторов: «True», если необходимо удерживать положение осей моторов после остановки, иначе — «False».

http://smallbasic.com/smallbasic.com/img/method_16.pngMoveSync

Motor.MoveSync(ports, speed1, speed2, angle, brake)

Поворачивает два мотора синхронно на определенное количество градусов. Если один из двигателей нагружен или что-то препятствует его вращению, второй двигатель пропорционально замедлится или вообще остановится. Это команда особенно полезна для колесных или гусеничных роботов с независимым приводом на каждое колесо или гусеницу — для обеспечения возможности сохранить сложную криволинейную траекторию движения или разворачиваться на месте, используя два мотора с разными скоростями вращения. Угол, на который будет повернут более медленный мотор зависит от его скорости:  он будет меньше заданного значения угла пропорционально отношению заданной для этого мотора скорости к скорости более быстрого мотора. Программа не будет переходить к выполнению следующих команд и будет ждать до тех пор, пока моторы не завершат выполнение команды и не повернутся на заданный угол.

ports — Имена двух портов моторов (например «AB» или «BD»).

speed1 — Скорость вращения первого мотора (мотора с первым по алфавиту номером порта): от -100 (полный назад) до 100 (полный вперед)

speed2 — Скорость вращения второго мотора (мотора со следующим за первым по алфавиту номером порта): от -100 (полный назад) до 100 (полный вперед)

angle — Угол поворота мотора (в градусах), для которого задана наибольшая скорость вращения (для другого мотора угол будут меньше — пропорционально отношению его скорости к скорости более быстрого мотора).

brake — Режим торможения моторов: «True», если необходимо удерживать положение осей моторов после остановки, иначе — «False».

http://smallbasic.com/smallbasic.com/img/method_16.pngWait

Motor.Wait(ports)

Ожидает, пока моторы не закончат выполнять команды Schedule или Move. Использование этой команды, как правило, лучше, чем вызов IsBusy() в цикле.

ports — Порты подключения моторов.

Дополнение (таблица выбора команд)

В следующей таблице приведены рекомендации по выбору команд для управления моторами:

  Повернуться на x градусов (программа ждет завершения) Включиться на постоянное вращение Повернуться на x градусов (без ожидания завершения)
Контроль скорости Motor.Move() Motor.Start() Motor.Schedule()
Контроль мощности Motor.MovePower() Motor.StartPower() Motor.SchedulePower()
Синхронизация вращения моторов Motor.MoveSync() Motor.StartSync() Motor.ScheduleSync()

 


Поделиться: