На этом уроке вы узнаете, как программировать плату контроллера MEGA2560 R3,
мигать встроенным светодиод Arduino, и как загружать программы с помощью
основных шагов. Необходимый компонент: Lafvin Mega2560 R3
Плата MEGA2560 R3 имеет ряд разъемов по обеим сторонам, которые
используются для подключения к различным электронным устройствам
Плата также имеет один светодиод, которым вы можете управлять из
своих скетчей. Этот светодиод встроен на плату MEGA2560 R3 и часто
обозначается как светодиод "L":
Возможно, вы обнаружите, что индикатор L на вашей плате MEGA2560 R3
уже мигает, когда вы подключите его к разъему USB. Это потому, что доски
обычно поставляются с предварительно установленным скетчем "Blink".
На этом уроке мы перепрограммируем плату MEGA2560 R3 нашим собственным
Blink-скетчем, а затем изменим частоту мигания светодиода.
На уроке 00 вы настроили свою среду
разработки Arduino и убедились, что можете найти правильный последовательный
порт для подключения к плате MEGA2560 R3. Пришло время проверить это
соединение и запрограммировать плату MEGA2560 R3. В Arduino IDE имеется
большая коллекция примеров скетчей, которые можно загрузить и использовать.
В эту коллекцию входит и скетч "Blink", для мигания светодиодом "L".
Загрузите эскиз Blink, который вы найдете в системе меню среды IDE, в меню
"Файл" -> "Примеры" -> "01.Basics" -> "Blink"
Когда окно скетча откроется - увеличьте его, чтобы вы могли увидеть весь скетч,
без прокрутки.
Примеры скетчей, включенные в Arduino IDE, доступны только для чтения. Вы
можете загрузить их на плату MEGA2560 R3, но если вы их поменяете, вы не
сможете сохранить изменения. Поскольку мы собираемся изменить этот скетч,
первое, что нам нужно сделать, это сохранить собственную копию. В меню "Файл"
в Arduino IDE выберите "Сохранить как ..." и сохраните скетч, например,
с именем "MyBlink".
Вы сохранили свою копию "Blink" в своей папке. Это означает, что если вы
когда-нибудь захотите с ним поработать - вы можете просто открыть его,
используя меню "Файл" -> "Открыть".
Также можно воспользоваться "Файл" -> "Открыть недавние" -> "MyBlink"
Подключите плату Arduino к компьютеру с помощью USB-кабеля и убедитесь,
что "Тип платы" и "Последовательный порт" установлены правильно.
Примечание: тип платы и последовательный порт
здесь не обязательно совпадают с показано на рисунке. Если вы
используете 2560, то вам придется выбрать Мега 2560 как тип платы,
другие варианты плат могут быть выбраны таким же образом. И
последовательный порт может отличается, несмотря на то, что здесь
выбран COM 18 - у вас это может быть COM3 или COM4, или другой, все
зависит от того какие порты на вашем компьютере заняты или уже
используются.
Arduino IDE покажет вам текущие настройки для платы в нижней части
окна.
Нажмите на кнопку "Загрузить". Вторая кнопка слева на панели инструментов.
Если вы посмотрите область состояния среды IDE, вы увидите индикатор
выполнения и серию сообщений. Сначала будет написано "Компилирование...".
Это преобразует скетча в формат, подходящий для загрузки в плату.
Далее статус изменится на "Загружаем...". На данный момент светодиоды на
Arduino должен начать мигать по мере передачи данных.
Наконец, статус будет изменен на "Загрузка выполнена"
Если вы видите что-то похожее на вот это сообщение:
Это может означать, что ваша плата вообще не подключена, или
драйверы не были установлены (или установлены не те), или
выбран неправильный последовательный порт. Если вы столкнулись
с этим - вернитесь к уроку 00 и
всё проверьте. После завершения загрузки плата должна
перезагрузиться и светодиод "L" начать мигать.
Вернемся к скетчу.
Обратите внимание, что огромная часть этого скетча состоит из
комментариев. Это не выполняемые программные инструкции; скорее
всего они просто объясняют, как работает программа. Именно для
этого они в основном используются. Все, что между /* и */ в
верхней части скетча является блоком комментариев; В данном
случае это объясняет назначение этого скетча.
Однострочные комментарии начинаются с // и все до конца этой
строки считается комментарием.
Далее у нас есть функция "setup". Опять же, как говорится в комментарии,
это функция выполняется когда кнопка сброса нажата, вообще она выполняется
каждый раз, когда плата сбрасывается по любой причине.
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
Каждый эскиз Arduino должен иметь функцию "setup()", где вы можете
хотите добавить свои собственные инструкции между { и }. В данном
случае в скобках содержится только одна команда, которая, как говорится
в комментарии, сообщает, что мы собираемся использовать светодиодный вывод
LED_BUILTIN (на большинстве плату светодиод подключен к выводу 13, поэтому
можно вместо LED_BUILTIN написать 13) в качестве выхода.
Также скетч обязательно должен иметь функцию "loop()" (петля). В отличие
от функции "setup()", которая запускается только один раз, после сброса,
функция "loop()", после того, как он закончит выполнять свои команды -
начнет все сначала.
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Внутри функции цикла всего четыре команды. Первая команда команды включает
светодиодный индикатор, подавая на вывод, к которому он подключен высокий (HIGH)
уровень, затем, командой "delay(1000)" происходит "задержка" на 1000 миллисекунд
(1 секунда). В это время светодиод просто светится и больше ничего не происходит.
Затем на вывод, к которому подключен светодиод подается низкий уровень (LOW),
светодиод гаснет и опять командой "delay(1000)" происходит "задержка" на 1 секунду.
После чего все начинается сначала, и мы видим на плате Arduino мигающий светодиод.
Теперь давайте заставим светодиод мигать быстрее. Как вы уже догадались,
ключ к этому заключается в изменении параметра для команды delay.
Изменим этот параметр, сделаем его в два раза меньше, заменив 1000 на 500:
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}
Это уменьшит на полсекунды каждую задержку. Загрузите скетч снова, и вы увидите,
что светодиод начнет мигать в два раза быстрее, с частотой 1 Гц (Один раз в секунду).