В этом уроке
- Структура кода
- Блоки setup(), loop(), комментарии, функции вывода
- Ваша первая программа
Видео версия урока
Структура кода программы
Пришло время написать Вашу первую программу. Для того, чтобы дальше было ясно, что
и зачем Вы делаете, необходимо определить, какая часть кода за что отвечает.
void setup() { // Код, который выполнится только один раз } void loop() { // Основной код, который будет выполняться бесконечно }
void setup()
В блоке void setup() указываются команды для предварительной настройки микроконтроллера, которые он выполнит только один раз в момент подачи на него питания или сразу после перезагрузки.
void loop()
Команды, которые будут бесконечно выполняться, пока на плате есть питание, хранятся в блоке void loop(). Микроконтроллер будет выполнять код, дойдёт до последней строки и снова начнёт с первой («loop» с англ.яз — петля, цикл).
Управление светодиодом на плате контроллера
В первом задании Вы будете включать и выключать светодиод, расположенный на плате Arduino Nano, который подключен параллельно 13 выводу.
Для этого введите нижеприведенный скетч в рабочее поле программы и нажмите кнопку «Загрузить». После этого скетч проверится на ошибки и загрузится в плату. Светодиод начнёт мигать.
/* Зажигаем светодиод на одну секунду, затем выключаем его на одну секунду */ void setup () { pinMode (13, OUTPUT); // Настраиваем 13 вывод на работу в режиме выхода } void loop () { digitalWrite (13, HIGH); // Установим на выходе логическую 1 delay (1000); // Задержка 1000 миллисекунд (1 сек) digitalWrite (13, LOW); // Установим на выходе логический 0 delay (1000); // Задержка 1000 миллисекунд (1 сек) }
Мы настоятельно рекомендуем не копировать приведённый код, а вводить его вручную. Так Вы гораздо быстрее поймёте логику его работы и запомните используемые функции.
- Комментарии. В рабочем поле всегда можно оставлять комментарии с пояснениями к блокам кода. Эта часть кода при загрузке в плату не учитывается. Для того, чтобы сделать комментарий, необходимо перед ним указать символы:
// — для комментариев в 1 строку;
/*... */ — для комментариев в несколько строк. - Блок setup()
Функция pinMode() (4 строка) — определяет режим работы указанного вывода (работать на вход или на выход). Функция находится в этом блоке, потому что её достаточно выполнить один раз. Назначаем 13 вывод работать в режиме ВЫХОД (OUTPUT), потому что в данном случае контроллер будет управлять светодиодом. Если бы мы подключили датчик, контроллер бы принимал от него сигнал, и вывод мы бы установили как ВХОД (INPUT). ; — каждую функцию необходимо завершать символом «точка с запятой». - Блок loop()
Функция digitalWrite() (8 строка) — определяет, какой сигнал подается на указанный вывод. Установим значение сигнала как «1» (HIGH). Светодиод загорится.
Функция delay() (9 строка) — останавливает выполнение программы на заданное количество миллисекунд (в 1 секунде — 1000 миллисекунд). Светодиод включен, и в течение секунды никаких действий больше не происходит.
Функция digitalWrite() (10 строка) — та же функция, которую мы использовали ранее, но теперь установим значение сигнала на 13 выводе как «0» (LOW). Светодиод погаснет.
Функция delay() (11 строка) — так же, как и в коде выше, останавливает дальнейшее выполнение программы на 1 секунду. Светодиод в это время выключен.
Функцию delay() нежелательно использовать в коде, так как она останавливает выполнение программы, и контроллер больше ничего не способен делать. Таким образом, ресурсы контроллера используются нерационально. В дальнейшем мы научимся обходиться без этой функции и реализуем отсчёт времени по-другому. А пока поздравляем — Вы только что написали свою первую программу!
Если у вас возникли проблемы с загрузкой кода, используйте нашу статью. Там более подробно рассмотрен процесс настройки, а также описываются способы устранения возможных проблем.
Дополнительное задание
1) Измените частоту мигания светодиода. Сделайте её больше или меньше.
2) Измените программу так, чтобы светодиод сначала моргнул три раза медленно,
а затем — три раза быстро.
Обсуждение