Читать «Цифровая электроника для начинающих» онлайн - страница 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.