Книга Электроника для начинающих, страница 71. Автор книги Паоло Аливерти

Разделитель для чтения книг в онлайн библиотеке

Онлайн книга «Электроника для начинающих»

Cтраница 71

Эту операцию необходимо выполнить один раз, когда плата активирована и ATmega328 начинает исполнять скетч. Чтобы использовать одиннадцатый контакт в качестве выходного, в блоке setup напишем:


void setup() {

   pinMode(11, OUTPUT);

}


Чтобы использовать контакт в качестве входного, напишем:


void setup() {

   pinMode(11, INPUT);

}

digitalWrite

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


void setup() {

   pinMode(11, OUTPUT);

}

void loop() {

   digitalWrite(11, HIGH);

   delay(1000);

   digitalWrite(11, LOW);

   delay(1000);

}


На макетную плату вставляем светодиод и резистор на 330 Ом, подключаем одиннадцатый контакт Arduino к аноду светодиода, а вывод резистора к контакту GND (Земля), как показано на следующем рисунке.


Электроника для начинающих

Рис. A3. «Ардуино», подключенная к светодиоду на макетной плате


Открываем среду разработки «Ардуино» и создаем новый скетч с помощью меню File =› New (Файл =› Новый). Откроется новое окно, в которое скопируем строки кода. Подключаем плату к компьютеру и проверяем в Tools =› Serial Port (Инструменты =› Порт), что последовательный порт виден и выбран.

Нажимаем кнопку Verify (Проверить) (первая на панели инструментов) и ожидаем, пока скетч будет проверен и скомпилирован. Если нет ошибок, как правило, они видны в маленькой черной панели в нижней части окна, нажмите кнопку Upload (Загрузить) – вторая на панели инструментов – и ждите передачи скетча. Светодиоды на плате будут мигать в течение нескольких секунд, после чего светодиод на макетной плате должен начать мигать.

Проанализируем скетч. В разделе setup настроим контакт 11 в качестве цифрового выхода. Первая инструкция loop приведет контакт в высокое состояние, то есть 5 В. Контакт останется в высоком состоянии, пока кто-нибудь не изменит его состояние. Следующая инструкция delay(1000) активирует паузу на 1000 мс, то есть на одну секунду, после чего новая команда digitalWrite «выключит» контакт, приведет его в низкое состояние. Последняя команда, это еще одна пауза на одну секунду. Инструкции loop закончились, и теперь «Ардуино» снова начнет новый цикл, который повторит инструкции в loop.


Электроника для начинающих

Рис. А4. Кнопки Verify (Проверить) и Upload (Загрузить)


Инструкция digitalWrite используется для включения или выключения контактов «Ардуино». Инструкция digitalWrite требует два параметра: номер контакта и присвоенное ему состояние (которое может быть либо высоким, либо низким). Контакт, который используется в качестве цифрового выхода, может принимать только два значения, соответствующие «вкл» и «выкл», то есть 5 или 0 В. Цифровой контакт, сконфигурированный в качестве выхода, также подает ток на элемент, который мы к нему подключаем. Если запрос тока большой, контакт будет непоправимо поврежден. С Arduino, ограничение тока составляет несколько десятков миллиампер; по этой причине невозможно напрямую подключить реле или двигатель, которые требуют сотни миллиампер, вы должны использовать транзистор или МОП-транзистор для запуска.

digitalRead

Давайте теперь попробуем использовать контакт в качестве цифрового входа, для обнаружения нажатия на кнопку. Контакт, настроенный как цифровой вход, может обнаружить, является ли приложенное напряжение равным 0 или 5 В. Для проверки работы подключим макетную плату к Arduino. На макетную плату вставим кнопку и резистор на 10 кОм, который будет подключаться к контакту 10. Нам также потребуется резистор с сопротивлением на 470 Ом, который мы использовали в предыдущем эксперименте.


Электроника для начинающих

Рис. А5. «Ардуино», подключенная к кнопке на контакте 10 и к светодиоду на контакте 11.


Кнопка имеет два контакта: один из двух соединен с землей через резистор на 10 кОм, а также к контакту 10. Другой контакт подключен к источнику питания на 5 В. Таким образом, вход «Ардуино» стабильно подключен к 0 В через резистор. Ток не протекает, таким образом, контакт 10 находится в низком уровне. Когда мы нажимаем кнопку, то подключаем 5 В к сопротивлению, то есть к контакту 10. Если бы не было сопротивления, нажав на кнопку, мы бы непосредственно соединили 5 В с землей, создав короткое замыкание!

Скетч в этом случае немного сложнее:


void setup() {

   pinMode(10, INPUT);

   pinMode(11, OUTPUT);

}

void loop() {

   if (digitalRead(10) – HIGH) {

      digitalWrite(11, HIGH);

      delay(1000);

   }

   digitalWrite(11, LOW);

}


В setup мы должны указать, что контакт 10 выступает в качестве входного и что контакт 11 является цифровым выходом. В loop мы будем считывать состояние контакта 10 с помощью digitalRead. Функция digitalRead требует только одного параметра, номер контакта для чтения, и возвращает состояние контакта, которое может быть высоким или низким. Первая строка loop считывает состояние контакта и, если оно высокое, потому что кто-то нажал на кнопку, входит в блок инструкций между двумя фигурными скобками, включает контакт 11 и ожидает в течение одной секунды.

Если никто не нажмет на кнопку, контакт будет в низком состоянии, «Ардуино» не выполняет блок инструкций после if, перейдя непосредственно к последней digitalWrite, выключающей контакт, к которому подключен светодиод.

analogWrite

Функция analogWrite используется для генерирования ШИМ-сигнала (т. е. сигнала прямоугольной формы), в котором мы можем изменить по желанию процент включенного и выключенного сигнала. Необходимы два параметра: выход и число, который указывает взаимосвязь между включением и выключением. Число не в процентах, а в числовом значении в диапазоне от 0 до 255. Не все контакты «Ардуино» могут генерировать сигнал данного типа; контакты, способные выполнять данную операцию, это 3, 5, 6, 9, 10 и 11. Мы можем их различить, так как на плате, рядом с номером, обозначен небольшой символ тильды (~).

Вход
Поиск по сайту
Ищем:
Календарь
Навигация