Працюємо з 09:00 до 19:00 Пн-Сб
Київ біля ТЦ Квадрат бул.Перова

Здравствуйте друзья! Вы большие молодцы, что заинтересовались уроками Arduino!


Структура программы в Arduino IDE может меняться программистом в зависимости от задач и конкретных решений, но основной её неизменный минимальный скелет как на этом примере обязательно состоит из двух функций setup и loop. Без них программа не будет компилироваться.

void setup() {
  Serial.begin(9600);
  Serial.println("loop");
}
void loop() {
  delay(1000);
  Serial.println("loop");
}

Функция – это фрагмент программного кода, имеющий уникальное название и ограниченный фигурными скобками, к которому можно обратиться из другого места программы.

Setup означает настройка. Прямое назначение этой функции состоит в том, чтобы программисты в ней задавали первоначальные параметры функционала контроллера и программных объектов, используемых в остальных частях программы.

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

Для понимания различий между этими функциями, рассмотрим блок-схему минимальной программы Arduino.


После старта контроллер принимается обрабатывать выражения, находящиеся между фигурными скобками секции setup. 
После окончания выполнения всех заданий первой функции, контроллер берется за бесконечное последовательное выполнение программного кода секции loop, который по задумке должен выполнять  всю полезную работу, заложенную нами , в динамическом режиме.
int led_pin = 13;
void setup() {
  Serial.begin(9600);
  pinMode(led_pin, OUTPUT);
  Serial.println("setup");
}
void loop() {
  digitalWrite(led_pin, HIGH);
  delay(1000);
  digitalWrite(led_pin, LOW);
  delay(1000);
  Serial.println("loop");
}
Теперь рассмотрим простой пример программы с подобной структурой, с заложенной возможностью мониторинга её выполнения в мониторе порта, а так же по индикации при помощи светодиода на плате контроллера. На плате Arduino Nano и UNO имеется светодиод, подключенный к 13-му пину и ним эта программа может мигать. Здесь к рассмотренной нами структуре добавилась строчка кода, которая находится впереди и вне фигурных скобок какой-либо функции. В этом месте принято размещать строки подключения библиотек, объявления глобальных переменных, констант и экземпляров классов.
#include “LiquidCrystal.h”
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
  lcd.begin(16, 2);
}
void loop() {
  lcd.print("Hello, world!");
  delay(1000);
}
Дальше усложняем структуру, чтобы рассмотреть пример подключения библиотеки и объявления экземпляра класса. Эта программа каждую секунду пишет на LCD-индикаторе «Hello, world!». Но индикаторами мы займемся позднее, а сейчас обратим внимание на характерные строки кода, которые в дальнейшем часто нам будут попадаться в различных скетчах. На первом месте стоит обращение к библиотеке для работы с символьными жидкокристаллическими индикаторами LiquidCrystal, а дальше строка объявления экземпляра одного LCD-индикатора с указанием пинов контроллера, к которым он подключен. Дальше в секции setup активируется метод начальной инициализации LCD-индикатора, в который передаются его параметры – количество символов в строке и количество строк. Это и есть начальная настройка. А дальше программа приступает к основному своему предназначению – отправке одного и того же сообщения на экран индикатора с периодичностью в 1000мс. И традиционно основная рабочая часть программы заключена в секцию loop.
Так же следует рассмотреть характерный пример структуры программы с пользовательской функцией. Здесь мы видим все тот же скелет программы, но с использованием дополнительной функции myfunc, которая вызывается из секции loop. То есть выполнение основного цикла программы будет каждый раз прерываться для выполнения этой функции. Пользовательскими функциями удобно пользоваться, но об этом узнаем на дальнейших уроках.
#include "LiquidCrystal.h"
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
  lcd.begin(16, 2);
}
void loop() {
  myfunc();
  delay(1000);
}
void myfunc(){
  lcd.print("Hello, world!");
}
Ещё нам часто в скетчах будут встречаться комментарии, отделяемые от текста программы косыми линиями и звёздочками. Они игнорируются компилятором программы и не участвуют в работе программы, но используются программистами для различных пояснений сторонним читателям или напоминаний для себя самого. Они могут быть однострочными и многострочными. О них тоже поговорим позднее.
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
*/
int led_pin = 13;
// setup function
void setup() {
  Serial.begin(9600);
  pinMode(led_pin, OUTPUT);
  Serial.println("setup");
}
// loop function
void loop() {
  digitalWrite(led_pin, HIGH);
  delay(1000);
  digitalWrite(led_pin, LOW);
  delay(1000);
  Serial.println("loop");
}
Итак мы получили представление о простейших кирпичиках, составляющих ваши будущие программы-скетчи для контроллеров Arduino. Запомнили, что содержимое функции setup обрабатывается контроллером один раз после запуска контроллера, а содержимое функции loop обрабатывается циклично без остановки. Так же мы знаем, что скетч не будет компилироваться при отсутствии этих функций. Ещё мы узнали, что помимо этих стандартных секций программа может содержать и другие пользовательские или библиотечные элементы, о которых мы много будем говорить на следующих уроках по Arduino IDE.

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Терминальный модуль для Wemos D1 mini

Терминальный модуль для Wemos D1 mini

Модуль для установки Wemos D1 mini с винтовыми клеммниками.Имеет выход шины I2C нормализованный под ..

109.44грн.

Диод выпрямительный 1N4007 SMD

Диод выпрямительный 1N4007 SMD

Миниатюрный диод в корпусе для поверхностного монтажа SMDРазмеры указаны на картинкеМаксимальное обр..

1.61грн.

Датчик движения инфракрасный

Датчик движения инфракрасный

Датчик реагирует на движение людей, животных или резкую перемену температуры предметов в радиусе сво..

40.77грн.

Стойка латунная М3 высотой 10мм шестигранник мама-мама

Стойка латунная М3 высотой 10мм шестигранник мама-мама

Латунная стойка мама-мама с резьбой М3 и шестигранным внешним сечениемПрименяется при конструировани..

4.80грн.

Модуль блока питания 3,3В 1А

Модуль блока питания 3,3В 1А

Удобный модуль питания из 220В AC в 3,3В постоянного тока. Разработан для установки на печатную плат..

106.83грн.

Теги arduino, arduino pro, arduino uno, arduino tutorial, ардуино, скетч, arduino projects, arduino уроки, arduino уроки программирования, arduino урок 1, arduino ide уроки, arduino первые уроки, arduino уроки для начинающих, alex gyver arduino уроки, arduino nano, arduino структура программы, микроконтроллер, arduino ide, ардуино уроки, ардуино уроки для начинающих, ардуино урок 1, arduino setup, arduino loop, программировать контроллер, arduino начало, arduino для начинающих