Працюємо з 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 размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Датчик вологості та температури DHT21

Датчик вологості та температури DHT21

Це точний та готовий до вивішування прямо на вулиці датчик відносної вологості та температури зі ста..

109.40грн.

Муфта на двигун з віссю 3мм

Муфта на двигун з віссю 3мм

Муфта для кріплення на вісь 3ммДля кріплення до вісі використовуються два притискаючих гвинтиНа флан..

37.43грн.

Аудіо штекер 3,5мм папа з гвинтовим клемником

Аудіо штекер 3,5мм папа з гвинтовим клемником

Стерео штекер 3,5 мм для монтажу електричних кіл передачі звукового сигналу за допомогою гвинтового ..

62.98грн.

Конектор круглий на 40 пінів 2,54мм мама

Конектор круглий на 40 пінів 2,54мм мама

Конектор для пайки на друковану плату з круглими отворами під радіодеталі (мікросхеми, транзистори ...

10.77грн.

Фоторезистивний датчик

Фоторезистивний датчик

Фоторезистивний датчик для вимірювання рівня освітлення.Змінює свій опір в залежності від інтенсивно..

2.55грн.