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

int switchPin = 7;

void setup()

{

  pinMode(ledPin, OUTPUT);

  pinMode(switchPin, INPUT_PULLUP);

}

void loop()

{

  if (digitalRead(switchPin) == LOW)

  {

    flash(100);

  }

  else

  {

    flash(500);

  }

}

void flash(int delayPeriod)

{

  digitalWrite(ledPin, HIGH);

  delay(delayPeriod);

  digitalWrite(ledPin, LOW);

  delay(delayPeriod);

}

Используя кусок провода или выпрямленную скрепку, замкните контакты GND и 7, как показано на рис. 1.13. Это можно делать на включенной плате Arduino, но только после выгрузки в нее скетча. Это связано с тем, что некий предыдущий скетч мог настроить контакт 7 на работу в режиме выхода — в этом случае замыкание на GND может повредить контакт. Так как скетч настраивает контакт 7 на работу в режиме входа, его безопасно соединять с контактом GND.

Вот что происходит в результате: когда контакты замкнуты, светодиод мигает чаще, а когда не замкнуты — реже.

Давайте исследуем скетч и посмотрим, как он работает.

Рис. 1.13. Опыт с цифровым входом

Во-первых, в скетче появилась новая переменная с именем switchPin. Этой переменной присвоен номер контакта 7. Скрепка в данном эксперименте играет роль выключателя. В функции setup контакт 7 настраивается на работу в режиме входа командой pinMode. Во втором аргументе команде pinMode передается не просто значение INPUT, а INPUT_PULLUP. Оно сообщает плате Arduino, что по умолчанию вход должен иметь уровень напряжения HIGH, если на него не подан уровень LOW соединением этого контакта с контактом GND (скрепкой).

В функции loop мы используем команду digitalRead для проверки уровня напряжения на входном контакте. Если он равен LOW (скрепка замыкает контакты), вызывается функция с именем flash и значением 100 (в параметре delayPeriod). Это заставляет светодиод мигать чаще.

Если входной контакт имеет уровень напряжения HIGH, выполняются команды в разделе else инструкции if. Здесь вызывается та же функция flash, но с более продолжительной задержкой, заставляющей светодиод мигать реже. Функция flash является упрощенной версией функции flash из предыдущего скетча, она просто включает и выключает светодиод один раз с указанной задержкой.

Цифровые входы могут соединяться с цифровыми выходами других модулей, которые действуют не так, как выключатель, но устанавливают те же уровни напряжения HIGH и LOW. В таких случаях функции pinMode следует передавать аргумент INPUT вместо INPUT_PULLUP.

Цифровые выходы

Немного нового можно сказать о цифровых выходах с точки зрения программирования после экспериментов с контактом 13, к которому подключен встроенный светодиод.

Настройка контактов на работу в режиме цифровых выходов осуществляется в функции setup с помощью следующей команды:

pinMode(outputPin, OUTPUT);

Чтобы на цифровом выходе установить уровень напряжения HIGH или LOW, нужно вызывать команду digitalWrite:

digitalWrite(outputPin, HIGH);

Монитор последовательного порта

Так как плата Arduino подключается к компьютеру через порт USB, есть возможность пересылать сообщения между ними, используя компонент Arduino IDE, который называется монитором последовательного порта (Serial Monitor). Для иллюстрации изменим скетч 01_03 так, чтобы вместо изменения частоты мигания светодиода после установки уровня напряжения LOW на цифровом входе 7 он посылал сообщение.

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

// sketch 01_04_serial

int switchPin = 7;

void setup()

{

  pinMode(switchPin, INPUT_PULLUP);

  Serial.begin(9600);

}

void loop()

{

  if (digitalRead(switchPin) == LOW)

  {

    Serial.println("Paperclip connected");

  }

  else

  {

    Serial.println("Paperclip NOT connected");

  }

  delay(1000);

}

Теперь откройте монитор последовательного порта в Arduino IDE, щелкнув на кнопке с изображением, напоминающим лупу. Вы сразу же должны увидеть несколько сообщений, появляющихся одно за другим (рис. 1.14).

Рис. 1.14. Монитор последовательного порта

Разъедините контакты, убрав скрепку, и вы должны увидеть, что текст сообщения изменился.

Так как встроенный светодиод в этом скетче не используется, отпала и необходимость в переменной ledPin. Зато появилась новая команда Serial.begin, запускающая обмен сообщениями через последовательный порт. Ее параметр определяет скорость передачи. Подробнее о взаимодействиях через последовательный порт рассказывается в главе 13.

Чтобы записать сообщение в монитор порта, достаточно выполнить коман­ду Serial.println.

В данном примере Arduino посылает сообщения в монитор последовательного порта.

Массивы и строки

Массивы предназначены для хранения списков значений. Переменные, которые нам встречались до сих пор, могли хранить только одно значение, обычно типа int. Массив, напротив, может хранить список значений и позволяет обращаться к отдельным значениям по их позициям в списке.

В C, как и в большинстве других языков программирования, нумерация позиций в массиве начинается с 0, а не с 1. Это означает, что первый элемент фактически является нулевым элементом.

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

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

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

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

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

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

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

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

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