Урок 7.1. Да будет свет
В данном уроке вы научитесь управлять сразу всеми 16 LED индикаторами на внешней плате TI-RGB Array, а также работать с ними по очереди.
Внимание: Некоторым учащимся мигающие индикаторы могут "резать глаза", поэтому использование выражения sleep() для замедления процесса мигания будет вполне уместным.
Вы научитесь:
- Включать ВСЕ LED индикаторы и использовать цикл для того, чтобы они мигали в унисон
- Использовать еще один цикл для включения и выключения LED индикаторов один за другим
Примечание для учителя: Благодаря внешней плате TI-RGB Array у учащихся есть возможность немного глубже окунуться в мир объектно-ориентированного программирования (ООП). Использование микроконтроллера TI-Innovator Hub в программировании на языке Python на калькуляторе TI-Nspire CX II-Т разработано с использованием классов (определений объектов). Как уже говорилось в серии уроков №1, 2 и 3 данного курса, рабочие функции (свет, цвет, звук, яркость) имеют объекты, уже определенные в модуле ti_hub. Например: в функции light.on() слово light является названием объекта, а on() - методом или функцией внутри определения этого класса.Внешняя плата TI-RGB Array представляет собой электроплату с 16-ю цветовыми LED индикаторами и чипом контролера. В комплекте также предоставляется короткий 4-х проводной кабель. Плата подсоединяется к микроконтроллеру TI-Innovator Hub через порты макетной платы (BB). Для того чтобы правильно ее подсоединить, следуйте инструкции, написанной на тыльной стороне электроплаты. Затем подсоедините микроконтроллер TI-Innovator Hub к калькулятору TI-Nspire CX II-Т.
Для использования всех внешних устройств на микроконтроллере TI-Innovator Hub необходимо, чтобы в коде программы сначала прописывалась переменная экземпляра (объект), а затем метод этого класса. Название класса выбирается из меню микроконтроллера TI-Innovator Hub, в то время как методов в этих меню вообще нет. Они "появляются" в редакторе Editor, когда вы вводите функцию (вы увидите это).
1. Начните работу с создания новой программы Python, используя шаблон Hub Project.
Зайдите в меню menu > TI Hub > Add Output Device и выберите пункт TI-RGB Array.
На месте символа-заполнителя var введите любое имя переменной. В примере мы использовали имя cb (для "электроплаты" (circuit board).
Примечание для учителя: Часто используемое название переменной - rgb, но в некоторых случаях оно может привести к путанице.
2. Чтобы одновременно включить все индикаторы, в следующей строке программы введите имя вашей переменной, а затем поставьте точку (десятичный разделитель).
cb.
В редакторе сразу появляется всплывающее диалоговое окно, в котором перечислены все доступные методы (функции) в классе rgb_array(). Ваша переменная (cb) является экземпляром класса (объектом) и может быть использована с любым из указанных методов класса.
Выберите пункт set_all(red, green, blue), как показано в примере.
3. Ваше выражение состоит из имени переменной, точки и функции, которую вы выбрали из выпадающего списка.
Также как и в случае со многими другими командами в меню программ на языке Python эта функция содержит три элемента (red, green и blue) и к каждому из них тоже есть подсказка, напоминающая пользователю о допустимом диапазоне (0-255).
Примечание для учителя: Функция .measurement() показывает силу тока в мА, которая использовалась платой для работы. Показатели силы тока будут варьироваться в зависимости от количества включаемых LED индикаторов, а также их цвета в момент считывания показателя. Для таких целей внешняя плата TI-RGB Array включена в список меню добавления устройств: TI Hub > Add Input Device. В данных уроках к этой функции мы не будем обращаться.
4. Выберите и введите значения трех цветов.
Запустите программу. Вы увидите, что все 16 LED индикаторов загораются заданным цветом.
Обратите внимание на то, что LED индикаторы остаются включенными, даже когда программа завершается.
5. Чтобы выключить LED индикаторы, используйте следующее выражение:
cb.all_off()
Снова введите имя своей переменной и точку, затем выберите all_off() из списка.
Также нужно добавить функцию sleep(2) (в секундах) между включением и выключением индикаторов. В противном случае разницы вы не увидите!
Теперь при запуске программы LED индикаторы еще будут оставаться включенными на пару секунд.
6. Теперь в цикл с оператором for включите выражения, контролирующие работу LED индикаторов, чтобы они мигали несколько раз. Добавьте еще одно выражение sleep() после того, как все они выключатся. Возможно, потребуется настройка времени приостановки программы, чтобы весь процесс проходил немного быстрее. Также не забудьте структурировать все выражения в блоке цикла.
Примечание: Не включайте в блок цикла выражение конструктора cb = rgb_array(). Его определять нужно всего один раз!
Запустите программу, чтобы протестировать ее перед тем, как приступить к дальнейшим шагам.
7. Если программа работает правильно, и LED индикаторы мигают все сразу, то у вас все получилось! Теперь давайте попробуем контролировать включение LED индикаторов поочередно с помощью внутреннего цикла.
8. Под циклом с оператором for i... добавьте внутренний цикл: for j in range(16):
Структурируйте все четыре выражения блока, чтобы они все обрабатывались в рамках внутреннего цикла.
Удалите выражение cb.set_all(...), но строку оставьте пустой. На его месте введите следующее:
cb.
и выберите set(led_position, red, green, blue).
Используйте переменную внутреннего цикла (j) в качестве элемента led_position и введите свои значения цвета.
Измените значения приостановки программы и диапазон внешнего цикла range(), чтобы немного ускорить весь процесс.
Примечание для учителя: Вместо выражения cb.all_off() вы можете использовать выражение cb.set(j, 0, 0, 0).
9. Запустите программу. Теперь 16 LED индикаторов загораются по очереди по 3 раза.
Не забудьте сохранить свой документ.