Управление последовательностью светодиодов с помощью MSP430G2


В предыдущей статье на нашем сайте мы рассмотрели основы работой с платой MSP430G2 LaunchPad от компании Texas Instruments с помощью Energia IDE и мигание одним светодиодом с ее помощью. В данной статье мы рассмотрим функции чтения и записи цифровых контактов платы MSP430G2 чтобы считывать состояние внешних устройств (например, кнопки) и управлять несколькими цифровыми выходами, к которым в нашем проекте будут подключены светодиоды.

Внешний вид проекта управления последовательностью светодиодов с помощью MSP430G2

Ранее на нашем сайте мы рассматривали мигание последовательностью светодиодов с помощью микроконтроллера PIC.

Необходимые компоненты

  1. Плата MSP430G2 LaunchPad (купить на AliExpress).
  2. Светодиод любого цвета – 8 шт. (купить на AliExpress).
  3. Кнопка – 2 шт.
  4. Резистор 1 кОм – 8 шт. (купить на AliExpress).
  5. Соединительные провода.

Схема проекта

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

Схема нашего проекта управления последовательностью светодиодов с помощью платы MSP430G2 представлена на следующем рисунке.

Схема проекта управления последовательностью светодиодов с помощью платы MSP430G2

Итого в схеме мы имеем 8 светодиодов, подключенных к контактам с P1.0 до P2.1 и 2 кнопки, подключенные к контактам P2.4 и P2.3.

Катоды светодиодов подключены к общему проводу схемы (земле), а аноды через токоограничивающие резисторы – к контактам ввода/вывода (I/O pins) платы. К слову сказать, токоограничивающие резисторы не являются обязательными для подключения светодиодов к микроконтроллеру MSP430 потому что максимальный ток для его контактов составляет всего 6mA, а напряжение – 3.6V. Тем не менее, использование токоограничивающих резисторов является хорошей практикой даже в этом случае.

У кнопок один провод подключен к общему проводу (земле), а другой – к контактам P2.3 и P2.4 соответственно. Это значит, что при нажатии кнопок на эти контакты будет подаваться земля.

Объяснение кода программы

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Сначала в функции void setup() мы зададим режимы работы контактов, к которым подключены светодиоды, на вывод данных. Для контактов, к которым подключены кнопки, мы зададим режим работы на ввод данных с использованием внутренних подтягивающих резисторов. Светодиоды подключены к контактам с P1.0 до P2.1, что соответствует их номерам на плате с 2 по 9. Кнопки подключены к контактам P2.3 и P2.4 – на плате они имеют номера 11 и 12 соответственно.

В функции void loop() мы будем проверять нажаты кнопки или нет, а если нажата какая либо из кнопок, мы должны начать последовательно зажигать светодиоды. Для проверки того, нажата ли кнопка, будет использоваться команда:

Функция digitalRead() будет считывать состояние указанного контакта и возвращать HIGH (1) если на нем напряжение определенного уровня и LOW (0) если контакт замкнут на землю. В нашем случае на контакте будет уровень LOW только при нажатии кнопки, все остальное время на нем будет уровень HIGH за счет использования подтягивающего резистора.

Если кнопка нажата мы будем попадать в бесконечный цикл while, в нем мы последовательно будем мигать светодиодами. Цикл будет исполняться бесконечно до тех пор пока внутри него не исполнится инструкция break.

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

При нажатии одной кнопки мы будем мигать светодиодами в одной последовательности, а при нажатии другой кнопки – в другой.

Для мигания светодиодами в другой последовательности мы также будем использовать цикл loop, но в данном случае мы будем использовать небольшую задержку в 100 миллисекунд с помощью функции delay(100) чтобы заметить что светодиод зажегся. Чтобы у нас горел только один светодиод мы будем использовать еще один цикл для того чтобы выключить все светодиоды. Затем мы будем включать другой светодиод, а все другие выключать. И так будет продолжаться в цикле бесконечно пока не будет нажата другая кнопка.

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

Как видите, в прошлом цикле мы изменяли номер светодиода со 2 по 9, а в этом – в обратной последовательности, с 9 по 2.

Сборка конструкции проекта

Схема проекта достаточно проста и ее можно собрать на макетной плате. Но мы для большей устойчивости использовали перфорированную плату, на которую припаяли компоненты нашей схемы. Внешний вид получившейся у нас перфорированной платы показан на следующем рисунке.

Внешний вид перфорированной платы с резисторами и светодиодами

Выходные контакты светодиодов и кнопок подключены к коннекторам, поэтому, используя соединительные провода мама-мама, их можно легко подключить к плате MSP430 LaunchPad. Внешний вид получившейся у нас конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Тестирование работы проекта

После того как сборка аппаратной части проекта будет закончена, подключите плату MSP430 к вашему компьютеру, откройте Energia IDE и скопируйте в нее код программы нашего проекта (приведен в конце статьи). Убедитесь, что в настройках Energia IDE вы правильно выбрали тип платы и COM порт, к которому она подключена, затем нажмите на кнопку Upload. После этого программа должна успешно скомпилироваться и загрузиться в плату, а внизу окна Energia IDE должно появиться сообщение “Done Uploading” (загрузка завершена).

Теперь, если вы нажмете на кнопку 1, то светодиоды должны начать зажигаться в последовательности, показанной на следующем рисунке.

Тестирование работы проекта

Для смены алгоритма включения светодиодов нажмите другую кнопку. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
52 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *