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

Урок 7.3. Последовательность

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

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

  • Использовать цикл с оператором for для последовательного включения LED индикаторов
  • Использовать математическое выражение для одновременного регулирования другого LED индикатора

Снаружи некоторых кинотеатров есть вывеска, которая вся переливается огнями, загорающимися в определенной последовательности. Создается впечатление вереницы движущихся друг за другом муравьев. Мы можете создать подобный эффект на своей внешней плате TI-RGB Array путем последовательного включения и выключения лампочек.

В своей программе вы будете одновременно включать два LED индикатора. Один из них находится в верхнем ряду, и последовательность включения будет осуществлена в направлении справа налево (от 0 до 7 индикатора), а второй - в нижнем ряду, и последовательность включения будет осуществлена в направлении слева направо (от 8 до 15 индикатора). Существует ли связь между последовательностью верхнего и нижнего ряда?

1. Начните работу с создания нового проекта Python Hub.

Создайте переменную с помощью конструктора rgb_array(), а также используйте цикл с нажатием на кнопку esc для завершения программы, как вы делали в предыдущем уроке.

Мы снова используем переменную cb, но вы можете выбрать абсолютно любую.

Добавьте следующее выражение:

while get_key() != "esc":

  block

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

2. Используйте цикл с оператором for, чтобы по одному включать верхний ряд индикаторов в последовательности справа налево (от 0 до 7 индикатора).

for top in range (8):

cb.set(top, 255,255,0) (Это желтый)

Используйте переменную top, которая будет контролировать верхний ряд индикаторов.

Помните, что функция range(8) обрабатывает числа от 0 до 7.

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

Примечание для учителя: Сейчас LED индикаторы включаются по очереди, но при этом не выключаются. Что делать - поговорим дальше.

3. Все 8 LED индикаторов очень быстро загораются, и к завершению программы весь верхний ряд индикаторов остается включенным.

Далее вы будете работать с нижним рядом с помощью переменной bottom. В нижнем ряду индикаторы должны загораться от 15 до 8. Какова связь между верхним и нижним рядами индикаторов?

bottom = ? ? ?

cb.set(bottom, 255, 255, 0)

Примечание для учителя: Запись выражения: bottom = 15 - top.

4. Теперь запустите программу. Все 16 LED индикаторов быстро загораются. Добавьте два выражения внизу блока цикла: выражение sleep(), которое немного замедляет процесс их включения, и функцию, которая выключает все LED индикаторы.

sleep(.25)
cb.all_off()

5. Снова попробуйте запустить программу. Отрегулируйте значение выражения sleep(), и, возможно, придется добавить еще одно выражение sleep() после функции all_off().

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