(495)240-8280ПН-СБ с 12:00 до 20:00
We speak English

Урок 4.2. Подсветка на поворотах

В рамках данного урока вы научитесь использовать две интересные функции в работе с роботом-вездеходом Rover - это включение цветового LED индикатора и приостановка обработки инструкций перед выполнением следующей команды.

Вы научитесь:

  • Регулировать цветовой LED индикатор на роботе-вездеходе Rover
  • Приостанавливать робот Rover, чтобы он успел завершить текущую команду до того, как выполнять следующую
  • Включать LED индикатор в определенный момент

Сверху на роботе Rover рядом с индикатором заряда батареи (4 зеленых лампочки) находится такой же цветовой LED индикатор, как на микроконтроллере TI-Innovator Hub, и работает он аналогичным образом. Только на микроконтроллере вы их не видите. Для работы с индикатором на роботе точно так же необходимо вводить значения в виде (red, green, blue).

Создайте новый шаблон программы для работы с роботом-вездеходом Rover Coding. Затем откройте меню:

menu > TI Rover > Outputs > color_rgb()

и вставьте следующее выражение в программу:

rv.color_rgb(red, green, blue)

Теперь нужно ввести значения для всех трех каналов цвета (от 0 до 255 каждый) и запустить программу, чтобы посмотреть, загорается ли LED индикатор заданным цветом.

Примечание для учителя: На роботе-вездеходе кроме LED индикатора есть еще два устройства - это ультразвуковой локатор спереди и цветовой датчик снизу.

1. В предыдущем уроке вам удалось настроить робот-вездеход так, чтобы он двигался по маршруту в виде квадрата. Для этого вы использовали цикл с оператором for. Сейчас вы напишете программу, которая позволит вам включать цветовой LED индикатор на вездеходе, чтобы он загорался красным цветом только на поворотах.

2. Сделайте копию той программы, в которой ваш робот-вездеход двигался по маршруту квадрата. Вы ее создавали в предыдущем уроке.

menu > Actions > Create copy...

Прямо перед выражением, которое дает команду роботу сделать поворот (влево или вправо) в вашей программе, нужно вставить функцию включения LED индикатора, чтобы он горел красным. А после выражения, выполняющего поворот, этот индикатор нужно снова выключить:

rv.color_rgb(255,0,0)
rv.left(90)
rv.color_off()

Оба выражения для работы с цветом можно найти в меню: menu > TI Rover > Outputs.

Запустите программу. Все ли команды выполняются роботом как положено?

Примечание для учителя: Сама программа работает быстрее, чем робот-вездеход обрабатывает команды движения. При ее запуске LED индикатор будет включаться на небольшой промежуток времени. Это происходит потому, что команды движения в микроконтроллере TI-Innovator Hub сохраняются в "очереди" и обрабатываются одна за другой. Чего нельзя сказать о командах, управляющих LED индикатором.
Абсолютно все команды посылаются на микроконтроллер TI-Innovator Hub. И он, в сою очередь, разделяет их на команды движения (которые попадают в "очередь" и выполняются поочередно) и другие команды (выполняются вне очереди).

Далее в этом уроке будет объяснено, как синхронизировать команды движения с другими инструкциями.

3. Программа не выполняется так, как задумано, потому что калькулятор TI-Nspire CX II-Т работает быстрее, чем робот-вездеход Rover. Калькулятор TI-Nspire CX II-Т посылает все инструкции на микроконтроллер TI-Innovator Hub настолько быстро, насколько это возможно. Микроконтроллер, в свою очередь, сохраняет команды, связанные с движением, и обрабатывает их по очереди подобно действиям водителя, который следует определенному маршруту на карте, совершая одно действие за другим. Все команды движения сохраняются в "очереди" (списке) и обрабатываются поочередно, потому что для выполнения каждой инструкции требуется время.

Но команды rv.color, которые работают с цветом, не связаны с движением. Когда микроконтроллер TI-Innovator Hub получает такие инструкции, он обрабатывает их немедленно (независимо от поступающих команд движения). Поэтому при запуске программы LED индикатор быстро мигает 4 раза в самом начале движения робота.

Примечание для учителя: Понятие очередности может показаться новым для учащихся. Подобный процесс происходит в приложениях на смартфоне, где есть карты, или в GPS устройствах, где маршрут сохраняется в очереди, и инструкции обрабатываются по мере того, как водитель достигает следующего пункта (точки маршрута) в пути.
В очереди сохраняются только инструкции движения, другие команды обрабатываются независимо, поэтому они не синхронизированы. Функция rv.wait_until_done() помогает синхронизировать команды движения с другими инструкциями.

4. К счастью, есть выражение, которое приостанавливает программу, и она будет ждать, пока робот-вездеход будет "готов" повернуть. Для этого после функции rv.forward() добавьте следующее выражение:

rv.wait_until_done()

Его можно найти в меню: menu > TI Rover > Commands.

Данная инструкция дает указание калькулятору TI-Nspire CX II-Т подождать, пока он получит сигнал от робота-вездехода о том, что робот Rover завершил выполнение команды rv.forward(). После этого включается красный LED индикатор, и робот-вездеход поворачивает.

Протестируйте еще раз свою программу.

5. Обратите внимание на то, что LED индикатор быстро мигает в начале поворота. На завершение поворота требуется время, поэтому нужно сделать так, чтобы калькулятор TI-Nspire CX II-Т снова приостановил работу, пока робот поворачивает, а потом выключить LED индикатор.

Добавьте еще одно выражение rv.wait_until_done() после функции rv.left() и перед тем, как выключится LED индикатор, чтобы на протяжении всего поворота он оставался включенным.

Снова запустите программу.

Можете ли вы сделать так, чтобы LED индикатор загорался другими цветами, когда робот перемещается вдоль сторон квадрата по маршруту? Подсказка: понадобится всего еще одно выражение.

Примечание для учителя: Функция wait_until_done() недоступна на языке TI-Basic.
Чтобы LED индикатор включался разными цветами, пока робот-вездеход движется вдоль сторон квадрата, необходимо добавить выражение rv.color() перед выражением rv.forward().