+7-960-0655211 (Билайн)
+7-987-4207734 (МТС)

интернет-магазин
РОБОТОТЕХНИКА
доставка по России и СНГ

Урок 2. Программируем Arduino [Структура кода]

В прошлой статье мы разобрали устройство платы Arduino, научились подключать ее к компьютеру и загрузили свой первый скетч! Называется он Blink и отвечает за мигание встроенного светодиода в плату с определенной частотой. Если вы начинающий, и только начали изучать мир Arduino, то вам некоторые функции в коде могут быть непонятны. Поэтому давайте разберем все по порядку. Структура кода в Arduino IDE – начинаем!

Программный код состоит из двух обязательных частей – функций. Первая часть называется void setup() (в переводе на русский – установка) и в ней прописывается код, который отработает всего один раз. Во второй обязательной функции void loop() прописывается код, работающий в бесконечном цикле. Сюда прописывается то, что будет происходить циклично (то есть с определенной частотой в определенный промежуток времени). Еще перед этими двумя функциями, то есть в самом начале кода, иногда прописываются различные директивы или переменные, которые будут необходимы для дальнейшей работы кода. Они будут постоянны на протяжении всего кода (это различные библиотеки, введенные названия устройств и т.д.)

Если перенестись на минутку в реальный мир, то эту структуру легко можно представить на простых вещах. Например, вы включаете свет в комнате, когда темно. Для этого, вы нажали на выключатель и лампочка загорелась. Также и в коде: сначала мы задаем постоянные данные, которые нам необходимы, то есть прописываем, что существует некое устройство (лампочка), прописываем для нее низкой значение

Таким образом, структура кода будет всегда одна и та же, вы ее сейчас видите ниже (от нее уже и нужно будет отталкиваться в дальнейшем, в зависимости от того, что вы хотите сделать и запрограммировать)

void setup()
{
}
void loop()
{
}


В нашем первом коде Blink есть некая функция PinMode(), а также delay() и digitalWrite()

Разберемся с каждой из них в отдельности.

В нашем коде встроенный светодиод мигает с частотой в одну секунду. Он подключается к выводу 13. В прошлом статье мы уже говорили, что на плате Arduino имеются выводы для подключения различных устройств и периферии – они делятся на цифровые и аналоговые. По отдельности их мы разберём чуть позднее, а пока скажем, что у каждого вывода есть номер. На плате Arduino Uno вверху расположены выводы, пронумерованные от 0 до 13. Это цифровые выводы, к ним подключают обычно различные светодиоды. Однако, вывод номер 13 отвечает за работу встроенного светодиода на плате и служит, чаще всего, для проверки ее работоспособности. Указав в скетче номер вывода, мы можем работать с устройством, которое подключено к нему.

Функция PinMode() служит для настройки этого самого вывода. Все выводы на плате могут работать, как входы, так и выходы. Потому пользователь это также должен учитывать. По умолчанию, все контакты являются входами, но для светодиода нужен выходной сигнал, так как на него идет рабочая команда и подается напряжение.

Функция PinMode(pin, mode); состоит из двух значений. Это pin - номер вывода (например у нас светодиод подключен к выводу 13) и mode - режим входа/выхода (INPUT/OUTPUT)

PinMode(13,OUTPUT);

Дальше в функции void loop() прописывается сам цикл. После определения контакта, как выход - можно устанавливать ей высокое или низкое состояние, это 0 или 5 вольт напряжения (иногда бывает и 3,3 вольт, но об этом тоже позднее)

Изменять состояние выходного сигнала можно с помощью функции digitalWrite(pin, level); Она тоже состоит из двух значений. Это pin - номер вывода (например у нас светодиод подключен к выводу 13) и level - уровень выходного сигнала: он может быть низкий(HIGH) или высокий(LOW)

digitalWrite(13, HIGH); // подается высокое напряжение и светодиод включается.

digitalWrite(13, LOW); // напряжение не подается, светодиод выключен.

Функция delay() служит для установки задержки в программном коде между выполнением различных действий (так как контроллер не может одновременно выполнять несколько действий, а выполняет их последовательно). В самой функции прописывается время этой самой задержки в миллисекундах (1000мс=1с)

delay(1000); //устанавливаем задержку в 1 секунду


Пример кода Blink:

void setup()
{
pinMode(13, OUTPUT);
}

void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}


На этом наш второй урок по программированию на Arduino подходит к концу. Сегодня мы познакомились со структурой кода на примере Blink, узнали о новых функциях и как их использовать, а впереди нас ожидает еще много всего интересного и познавательного. Всем удачной компиляции и отличного настроения!