Віримо в перемогу ЗСУ!
Магазин у відпустці до 01.07.2022

Привіт, друзі! Я радий презентувати вам новий урок під назвою Arduino константи!


Константи – це спосіб передати такі дані до контролера, які не можна буде змінювати після завантаження програми. З цього випливає, що ввести їх може лише програміст, а користувач змінювати їх не зможе. Частково їх можна описати як змінні тільки для читання.

В Arduino IDE передбачені іменовані та літеральні константи, визначені та користувальницькі. Розглянемо їх усіх окремо і в кінці окремо розкриємо тему текстових констант.


b = 9.8 + 34.6 / 2.7;

n = 0.005;

k = (var1+var2)/100;

String svar1 = "geekmatic.in.ua";

char myChar = 'A';

Serial.println(572.45);
Serial.println("MyText");

Літеральні константи – це просто числа для числових даних або символи для текстових даних, які прямо вказуємо у висловлюваннях програми. Ми можемо вказувати їх у формулах, умовних операторах або надавати їх значення змінним, аргументам функцій або іменованим константам.


33u
456743U
100000L
32767ul

n = B101; //двоичное число все равно что 
5 = ((1 * 2^2) + (0 * 2^1) + 1)

n = 0x101;  //16-ричное число все равно что 257 = ((1 * 16^2) + (0 * 16^1) + 1)
За замовчуванням цілі літеральні константи інтерпретуються як тип int, і якщо нам необхідно вводити в скетч дані, які не влізуть у тип int, то бажано використовувати наступні символи в кінці цифри.
Не потрібно їх лякатися – символ u чи U конкретизує, що константа має атрибут unsigned. Тобто може набувати лише позитивних значень.
А символ l або L означає форсування константи як long.
Літеральні константи іноді необхідно чи зручно писати у 16-річній, 8-річній або двійковій системах обчислення. 8-річна навряд чи знадобиться, але інші точно потрібні.
Приклади наведено на ілюстрації вище.

#define Var1 56

const byte PinA = 2;
const byte PinB = 3;
const int PinC = 4;

const String var = "myText";

void setup{

  pinMode(PinA, INPUT);
  pinMode(PinB, INPUT);
  pinMode(PinC, OUTPUT);

}

Іменовані константи мають своє ім'я. У документації Arduino, наприклад, зазначено лише одну перевагу використання іменованих констант – це зручність читання програми. Справді, якщо роздати їм чіткі однозначні імена, то програма читатиметься програмістом значно простіше. Але так само іменовані константи дають нам можливість швидкого переконфігурування програми на початку її тексту. Розставивши константи по всій програмі, ми можемо мати доступ до зміни значень в єдиному місці. Так, наприклад, можна оголосити ряд іменованих констант з номерами пінів, і використовувати імена пінів багаторазово в програмі, а при необхідності швидко змінити номер необхідного піна на початку скетчу і не шукати по всій програмі всі згадки про цей пін. Часто використання константи замість змінної, яка змінюватиме значення під час виконання програми, дозволяє навіть виграти у звільненні пам'яті контролера.

false
true

HIGH
LOW

INPUT
INPUT_PULLUP
OUTPUT

LED_BUILTIN

D1...D13..., A0...A7...

Автори Arduino IDE передбачили ряд визначених іменованих констант для зручності користувачів та полегшення читання скетчів. Подякуємо їм за це. І ви повинні тут зрозуміти, що за кожною з цих констант ховається ціле число.
Константа false означає логічну брехню і практично зберігає значення 0. Константа true означає логічну правду і практично вона дорівнює не нулю. Тобто якщо true в умовному операторі порівнювати будь-яким цілим числом, не рівним нулю, то умова виконається. Це може приймати і негативні значення.
Константа HIGH означає високий логічний рівень (5В для 5-вольтових контролерів або 3,3В для 3,3-вольтових контролерів) і практично містить число 1. Константа LOW означає низький логічний рівень (менше 1,5В для 5-вольтових контролерів або менше 1,0В для 3,3-вольтових контролерів) і на практиці просто містить нуль.
Константи INPUT, INPUT_PULLUP та OUTPUT створені для конфігурування входів/виходів контролера. Висновок, налаштований як INPUT, працює як дискретний вхід. Висновок, налаштований як OUTPUT, працює як дискретний вихід. А конфігурація INPUT_PULLUP переводить пін контролера в режим дискретного входу з підтяжкою плюс живлення.
Константа LED_BUILTIN містить номер піна, до якого на стандартній платі обраного менеджера плат контролера підключений сигнальний світлодіод.
Константи виду D1...D13..., A0...A7... повторюють позначення на платі контролера та містять номери відповідних пінів. Константи для позначення пінів можуть містити різні значення для різних контролерів. Зміна відбувається автоматично при виборі контролера в менеджері плат.

#define MYCONST 56

const byte PinB = 3;
const int PinC = 4;

const float Var1 = 78.234;

const String Var = “myText”;

Користувальницькі іменовані константи дають нам широке поле творчості. Найчастіше їх застосування для роздачі імен пін контролера, відповідно до конкретного проекту. Також мені наприклад доводилося використовувати масиви констант для зберігання нот мелодії.

Рекомендується іменованим константам давати ім'я з великої літери.

Константи можна оголошувати через #define ім'я літерал

але рекомендується оголошувати їх лише через const ім'я = літерал;


const char MyChar = 'A';
const char Str1[] = "arduino";
const char Str2[8] = "arduino";
const String Var = "myText";
const String Var = F("myText");
Serial.print(F("Write something"));


Окремо варто зупинитись на символьних константах.

Символьні літерали типу char декларуються через одиночні лапки , які масиви і літерали типу String через подвійні лапки.

Для зберігання літералів констант типу String над оперативної пам'яті RAM, а FLASH пам'яті контролера, при оголошенні необхідно використовувати синтаксис з літерою F.

Докладніше цю велику тему з декларацією символьних констант та змінних необхідно буде розглянути на окремому уроці.

Дякую за увагу!

<< Проекти << Усі товари >> Статті, уроки >>

Написати відгук

Примітка: HTML размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Модуль 4-х MOSFET транзисторів 20А

Модуль 4-х MOSFET транзисторів 20А

Модуль для коммутації 4-х потужних навантажень постійного струму за допомогою керуючих сигналів від ..

191.14грн.

Як працює Arduino

Як працює Arduino

Как работает Arduino Arduino базовая архитектураЯдром платформы Arduino является микросхема-мик..

Помпа для відсмоктування припою

Помпа для відсмоктування припою

Інструмент для відбору зайвого припою з друкованої плати.Необхідно попередньо розплавити припой за д..

68.43грн.

Блок живлення 12 В 2 А з роз'ємом 5,5мм x 2,5мм

Блок живлення 12 В 2 А з роз'ємом 5,5мм x 2,5мм

Мережевий блок живлення 12В. Вхідна напруга змінного струму 100...240 В 50/60 ГцВихідна стабілізован..

208.38грн.

Двигун 12В з редуктором 150RPM

Двигун 12В з редуктором 150RPM

Двигун постійного струму з потужним редуктором для використання в різноманітній робототехніці, елект..

478.72грн.