Читать «Цифровая электроника для начинающих» онлайн - страница 13

Дмитрий Витальевич Елисеев

- Запустить Arduino IDE, набрать текст программы, как показано на рисунке

- Нажать кнопку левую кнопку “Проверить” и соседнюю “Загрузить” - программа будет загружена в Arduino.

Если все было сделано правильно, через несколько секунд мы увидим мигающий на плате светодиод (при самом первом запуске, Arduino IDE вначале предложит сохранить текст исходного кода в файле). Если вместо сообщения “Done compiling” мы видим ошибку, нужно внимательно прочитать, что она значит. К примеру, может быть выбран неправильный порт, или в тексте программы есть опечатка.

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

Разберем программу по шагам.

int led = 13; Здесь создается глобальная переменная, хранящая номер вывода “13”, к которому подключен светодиод (номера выводов можно посмотреть в документации к плате).

void setup() - здесь объявляется функция setup, которая будет вызвана только один раз при запуске программы. В ней мы настраиваем наш вывод 13 как “выход”, вызовом функции pinMode(led, OUTPUT);.

Функция loop(), в отличие от setup, выполняется постоянно, бесконечное число раз. В ней мы и размещаем всю логику работы программы. В данном случае, логика проста - мы посылаем в порт логическую “1” командой digitalWrite(led, HIGH), затем ждем одну секунду с помощью вызова delay(1000), затем посылаем логический “0”, опять ждем. Данный цикл будет автоматически повторяться, пока плата включена и работает.

Огромный плюс использования микроконтроллеров - в их огромной гибкости, изменяя код, мы можем полностью менять логику работы программы. Например, несложно сделать чтобы светодиод мигал в режиме “2 коротких, 1 длинный”, для этого достаточно лишь изменить текст кода:

void loop() {

digitalWrite(led, HIGH);

delay(500);

digitalWrite(led, LOW);

delay(500);

digitalWrite(led, HIGH);

delay(500);

digitalWrite(led, LOW);

delay(500);

digitalWrite(led, HIGH);

delay(2000);

digitalWrite(led, LOW);

delay(2000);

}

Не нужно ни пайки, ни какой-либо перенастройки, все делается чисто программно.

Кстати, зачем нужен вызов функции delay? Все просто, без нее программа тоже будет работать - но светодиод будет переключаться со скоростью тысячи раз в секунду, что будет неразличимо глазом. Тактовая частота процессора составляет несколько мегагерц, и без пауз программа будет работать слишком быстро.

Можно ли подключить светодиод к другому выводу, или подключить несколько светодиодов? Разумеется, можно. Для этого нужно найти инструкцию к плате, где будут указаны номера выводов (номера подписаны и на самой плате). Для Arduino Uno такая схема выглядит примерно так:

Далее, достаточно подключить к нужному выводу (например это может быть пин “10”) светодиод, не забыв и ограничительный резистор. Вторым выводом будет общий вывод, или GND (это аналог вывода “-” в схеме с батарейкой из первой части книги). На плате несколько выводов GND, можно использовать любой из них, они соединены вместе.

Схема целиком на макетной плате будет выглядеть так:

Разумеется, текст кода тоже придется изменить, поменяв номер вывода с 13 на 10.