Віримо в перемогу ЗСУ!
Працюємо з 09:00 до 18: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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
LED драйвер 330/660мА с ШИМ управлением

LED драйвер 330/660мА с ШИМ управлением

Драйвер для мощных светодиодов и светодиодных светильников на основе микросхемы AL8805. Позволя..

116.28грн.

Джойстик двухосевой

Джойстик двухосевой

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

42.92грн.

Припой с канифолью 0,5мм 30г

Припой с канифолью 0,5мм 30г

Нить припоя для тонкой пайки мелких радиодеталей, содержащая флюсСвинца 40 %Олова 60 %Флюса 1,2 %Нап..

203.06грн.

Arduino NRF24L01 эмулятор клавиатуры и мыши

Arduino NRF24L01 эмулятор клавиатуры и мыши

Задача проекта – удаленное управление 20-ю компьютерами с одного главного компьютора. Под управление..

Arduino закачивание детской кроватки по крику

Arduino закачивание детской кроватки по крику

Привет друзья!  Представляю интересный проект для новоиспеченных папочек. Это - автоматическ..

Теги 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 для начинающих