Читаем Цифровая электроника для начинающих полностью

Отображаемый в углу “COM7” - это и есть тот самый порт, через который Windows “общается” с Arduino. Его несложно использовать в различных программах, например передавать с платы на компьютер значения датчика температуры. Но не менее важная функция - это вывод значений переменных, что позволяет проверить правильность работы программы. Этот процесс называется “отладка” или “debugging”, что переводится как “поиск жучков”. Самые первые компьютеры тоже работали в двоичной системе счисления, но вместо транзисторов, имели механические реле. По легенде, бабочка попала в такое реле, из-за чего контакты перестали замыкаться, и разумеется, программа стала работать неправильно. Много лет прошло, и компьютеры уже давно не механические, а название так и осталось (подробнее можно прочитать в Википедии).

Рассмотрим вывод данных в порт из программы:

void setup() {

// Открыть порт на нужной скорости

Serial.begin(9600);

}

void loop() {

for(int x=0; x< 64; x++) {

// Вывод числа в разных форматах:

Serial.print(x);

Serial.print("\t");

Serial.print(x, DEC);

Serial.print("\t");

Serial.print(x, HEX);

Serial.print("\t");

Serial.println(x, BIN);

delay(200);

}

Serial.println();

}

Рассмотрим код программы подробнее.

Скорость порта. Она задается в функции setup(). Для того, чтобы два устройства обменивались данными между собой, данные должны передаваться на одинаковой скорости. Скорость измеряется в бодах, и может быть различной, например 9600 или 115200 бод. Бод - это количество изменений сигнала в секунду. В нашем случае сигналы могут быть только двоичными, так что скорость в бодах соответствует скорости в битах в секунду. Можно использовать любую скорость, главное чтобы на приёмной и передающей сторонах они были одинаковыми.

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

Собственно, вывод данных, реализуется с помощью функции Serial.print. Тут все просто, функция посылает данные “как есть”, причем можно послать как текстовую строку, так и значение числовой переменной. Также для удобства чтения можно использовать вариант функции println - она делает так называемый “возврат каретки” (CR, carriage return), устаревший термин, обозначающий перевод курсора на новую строку. Как можно видеть в коде, число можно вывести в разных системах счисления - десятичной, 16-ричной, двоичной. Знак “табуляции” - "\t" вставляет отступ между числами, что также делает чтение более удобным.

Наконец, программа готова, загружаем ее в Arduino. Мы видим как светодиод на плате начинает мигать - Arduino передает данные в порт. Чтобы увидеть их, выбираем в Arduino IDE пункт меню Serial Monitor и видим наши данные.

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

2.5 Ввод данных: определяем нажатие кнопки

Сложно найти хоть какое-либо электронное устройство, совсем не имеющее кнопок. Кнопки несложно подключить и к Arduino - любой вход микроконтроллера может работать не только как “выход”, но и как “вход”.

Сначала, кнопку надо подключить, как показано на схеме:

На макетной плате это может выглядеть примерно так:

Принцип работы схемы прост. Когда кнопка не нажата, вход Arduino подключен через резистор к линии “питания”, +5В, что соответствует логической единице. Если пользователь нажимает кнопку, напряжение на входе становится равным нулю.

Резистор - важный компонент схемы. Если бы его не было, при отпущенной кнопке значение входа было бы неопределенным - вход Arduino ни к чему был бы не подключен. Точное значение резистора кстати, не столь важно, оно может быть и 1КОм, и 5КОм, и 10КОм. Такой резистор называется “подтягивающим” (pull up), т.к. он соединяет (подтягивает) вход к напряжению питания. Можно кстати, сделать и наоборот - резистор соединить с “землей”, а кнопку замыкать на питание. Такая схема называется pull down. Очевидно, что во втором случае при отпущенной кнопке напряжение будет равно нулю.

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

int buttonPin = 2;

int ledPin = 13;

void setup() {

// Вывод настроен как “выход”

pinMode(ledPin, OUTPUT);

// Вывод настроен как “вход”

pinMode(buttonPin, INPUT);

}

void loop() {

// Читаем состояние вывода:

int buttonState = digitalRead(buttonPin);

// Устанавливаем состояние светодиода:

if (buttonState == HIGH) {

// LED off

digitalWrite(ledPin, LOW);

} else {

// LED on

digitalWrite(ledPin, HIGH);

}

}

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

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

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

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

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

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

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

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

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