Читаем Программируем Arduino. Профессиональная работа со скетчами полностью

GND

5 V

5 V

13

13

12

12

11

11

10

Reset

Конденсатор емкостью 10 мкФ включите между контактами Reset и GND на программируемой плате Arduino (то есть на плате, куда будет записан загрузчик). Более длинный положительный вывод конденсатора должен быть подключен к контакту Reset.

На рис. 2.8 показаны соединенные платы Arduino. Плата справа выступает в роли программатора. Обратите внимание на то, как контакт 10 платы-программатора соединен изолированным проводом с контактом Reset программируемой платы. Соединение выполнено так, что к одному контакту Reset на программируемой плате одновременно подключены провод и положительный вывод конденсатора.

Имейте в виду, что плата, выступающая в роли программатора, управляет программируемой платой, поэтому к порту USB компьютера должна быть подключена только плата-программатор.

На плату-программатор требуется установить специальный скетч. Его можно найти в меню File—>Examples (Файл—>Примеры). Он называется ArduinoISP и находится в конце раздела Examples (Встроенные примеры).

Рис. 2.8. Программирование с помощью второй платы Arduino

Как обычно, выберите тип платы и порт и выгрузите скетч ArduinoISP в плату-программатор. Затем в меню Tools (Инструменты) перейдите в подменю Programmer (Программатор) и выберите пункт ArduinoISP.

Наконец, выберите в меню Tools (Инструменты) пункт Burn Bootloader (Записать Загрузчик). Процедура записи займет одну-две минуты, в течение которых должны мигать светодиоды Rx и Tx на плате-программаторе и светодиод L на программируемой плате.

Когда процедура завершится, в программируемый микроконтроллер будет установлен новый загрузчик.

В заключение

В этой главе мы заглянули под капот платы Arduino и посмотрели, как она работает в действительности. Я показал вам, что скрывается за фасадом окружения Arduino.

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

7 Аналогичные обсуждения можно найти на русскоязычном форуме http://arduino.ru/forum. — Примеч. пер.

3. Прерывания и таймеры

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

Аппаратные прерывания

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

void loop()

{

  if (digitalRead(inputPin) == LOW)

  {

    // Выполнить какие-то действия

  }

}

Этот код постоянно проверяет уровень напряжения на контакте inputPin, и, когда digitalRead возвращает LOW, выполняются какие-то действия, обозначенные комментарием // Выполнить какие-то действия. Это вполне рабочее решение, но что если внутри функции loop требуется выполнить массу других операций? На все эти операции требуется время, поэтому есть вероятность пропустить короткое нажатие на кнопку, пока процессор будет занят чем-то другим. На самом деле пропустить факт нажатия на кнопку почти невозможно, потому что по меркам микроконтроллера она остается нажатой очень долго.

Но как быть с короткими импульсами от датчика, которые могут длиться миллионные доли секунды? Для приема таких событий следует использовать прерывания, определяя функции, которые будут вызываться по этим событиям, независимо от того, чем занят микроконтроллер. Такие прерывания называют аппаратными прерываниями (hardware interrupts).

В Arduino Uno только два контакта связаны с аппаратными прерываниями, из-за чего они используются очень экономно. В Leonardo таких контактов пять, на больших платах, таких как Mega2560, их намного больше, а в Due все контакты поддерживают возможность прерывания.

Далее рассказывается, как работают аппаратные прерывания. Чтобы опробовать представленный пример, вам понадобятся дополнительная макетная плата, кнопка, сопротивление на 1 кОм и несколько соединительных проводов.

На рис. 3.1 изображена собранная схема. Через сопротивление на контакт D2 подается напряжение HIGH, пока кнопка не будет нажата, в этот момент произойдет заземление контакта D2 и уровень напряжения на нем упадет до LOW.

Загрузите в плату Arduino следующий скетч:

// sketch 03_01_interrupts

int ledPin = 13;

void setup()

{

  pinMode(ledPin, OUTPUT);

  attachInterrupt(0, stuffHapenned, FALLING);

}

void loop()

{

}

void stuffHapenned()

{

  digitalWrite(ledPin, HIGH);

}

Рис. 3.1. Электрическая схема для испытания прерываний

Помимо настройки контакта LED на работу в режиме цифрового выхода функция setup с помощью еще одной строки связывает функцию с прерыванием. Теперь в ответ на каждое прерывание автоматически будет вызываться эта функция. Рассмотрим эту строку внимательнее, потому что аргументы вызываемой здесь функции выглядят несколько необычно:

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных