Вхід до системи

Константи

Матеріал з мікроАмпер
Версія від 23:01, 9 липня 2016, створена Oogway (обговореннявнесок) (Oogway перейменував сторінку з HIGH на Константи)

Константи

Константи в мові Arduino – це наперед визначені змінні. Їх використовують для полегшення читабельності програм. Існують наступні групи констант:


Константи, що визначають логічні рівні: true чи false (Булеві константи)

У мові Arduino є дві константи, що позначають істинність чи хибність, - true та false.

false

false найлегше визначити із цієї пари. false задається як 0 (нуль).

true

true часто визначають як 1, що є правильним, проте не єдино можливим варіантом. Будь-яке ціле число, котре не є нулем, буде true у контексті Булевої логіки. Наприклад, значення -1, 2 і -200 усі будуть істинні (true) у Булевому сенсі.

Зверніть увагу, що константи true та false пишуть з малої літери, на відміну від HIGH, LOW, INPUT та OUTPUT.


Константи, що визначають рівень напруги на виводах: HIGH та LOW

Цифрові виводи можуть виводити або зчитувати лише два значення: HIGH чи LOW.


HIGH

Значення цифрового виводу HIGH відрізняється залежно від того, чи запрограмовано вивід як вхід (INPUT) чи як вихід (OUTPUT). Коли вивід сконфігуровано як вхід (INPUT) за допомогою функції pinMode(), то під час зчитування (через функцію digitalRead())Arduino (Atmega) видасть значення HIGH, якщо:

• напруга на виводі більша за 3 В (5-вольтові плати);

• напруга на виводі більша за 2 В (3,3-вольтові плати).

Окрім того, сконфігурованому як вхід (INPUT) виводу можна задати значення HIGH через функцію digitalWrite(). Це запустить в дію внутрішні підтягувальні резистори номіналом 20 кОм і призведе до виникнення на виводі високого рівня HIGH. Під час зчитування значення HIGH утримуватиметься доти, доки вивід не опустять до значення LOW зовнішні елементи схеми. Саме так працює змінна INPUT_PULLUP, про що детальніше буде описано нижче.


Коли вивід сконфігуровано як вихід (OUTPUT) через функцію pinMode() і на нього подано високий рівень напруги HIGH через функцію digitalWrite(), напруга на виводі буде:

• 5 В (5-вольтові плати);

• 3,3 В (3,3-вольтові плати).

У такому стані він може подавати струм, наприклад, живити світлодіод, послідовно під’єднаний через резистор до землі.


LOW

Константа LOW також має різні значення залежно від того, сконфігуровано вивід як вхід або як вихід. Коли за допомогою pinMode()вивід запрограмовано як вхід (INPUT), під час зчитування через digitalRead() Arduino (Atmega) видасть значення LOW, якщо:

• напруга на виводі менша за 3 В (5-вольтові плати);

• напруга на виводі менша за 2 В (3,3-вольтові плати).

Коли ж вивід сконфігуровано як OUTPUT за допомогою pinMode()і запрограмовано на LOW через функцію digitalWrite(), він має напругу 0 В (для обох 5- і 3,3-вольтових плат). В цьому стані струм може втікати у вивід, наприклад, від світлодіода, котрий послідовно під’єднано через резистор до +5 В (або +3,3 В).


Константи, що визначають режим цифрового виводу: INPUT, INPUT_PULLUP та OUTPUT

Цифрові виводи можна використовувати в режимах INPUT (вхід), INPUT_PULLUP та OUTPUT (вихід). Через зміну виводу за допомогою функції pinMode() міняється його режим роботи.

Виводи, сконфігуровані як вхід

Виводи Arduino (ATmega), сконфігуровані як вхід через pinMode() , перебувають у високоімпедансному стані (стані повного опору). Такі виводи потребують дуже небагато ресурсів від плати, як і послідовний резистор опором 100 Ом, розміщений перед виводом. Завдяки цьому такий режим виводу зручний для зчитування сигналів із датчиків.

Якщо ви сконфігурували вивід як вхід і хочете зчитати стан перемикача, коли той увімкнений, вивід почне «плавати» з непередбачуваним результатом. Цю проблему вирішує підтягувальний або відтягувальний резистор. Його функція – підтягувати вивід до необхідного стану, коли перемикач увімкнено. Зазвичай для цього беруть 10-кілоомний резистор, оскільки 10 кОм якраз достатньо, щоб запобігти «плаванню» входу і водночас не використовувати надто багато струму, коли перемикач вимкнено. Детальніше див. у - Digital Read Serial.

Якщо використовувати відтягувальний резистор, вхідний вивід буде LOW , коли перемикач увімкнено, і HIGH, коли перемикач вимкнено.

З підтягувальним резистором навпаки: HIGH, коли перемикач увімкнено, та LOW, коли його вимкнено.


Виводи, сконфігуровані як INPUT_PULLUP

Мікроконтроллер Atmega має вбудовані підтягувальні резистори (вони внутрішньо під’єднуються до живлення), до яких є доступ. Щоб використати їх замість зовнішніх підтягувальних резисторів, знадобиться режим INPUT_PULLUP у функції pinMode().

Див. Input Pullup Serial як приклад використання цього режиму.

Виводи, сконфігуровані як INPUT чи INPUT_PULLUP, можна пошкодити або вивести з ладу, якщо під’єднати їх до напруги, нижчої за землю (від’ємна напруга), або до напруги, вищої за напругу живлення (5 В або 3 В).


Виводи, сконфігуровані як вихід

Виводи, сконфігуровані як вихід через pinMode(), перебувають у низькоімпедансному стані. Це означає, що вони можуть постачати достатньо струму до інших елементів схеми. Виводи Atmega можуть постачати або поглинати струм до 40 мА від інших пристроїв/схем. Саме тому їх зручно використовувати для живлення світлодіодів, адже останні потребують менше 40 мА. Для більших навантажень (наприклад, для моторів), знадобиться транзистор або інші додаткові елементи керування.

Виводи, сконфігуровані як вихід, можна пошкодити або вивести з ладу, якщо під’єднати їх до джерела напруги.


Вбудована константа: LED_BUILTIN

Більшість плат Arduino мають вивід, під’єднаний до вбудованого світлодіода з послідовним резистором. Константа – це номер виводу, до якого під’єднано вбудований світлодіод. На більшості плат це вивід номер 13.


Див. також

• pinMode()

• Цілочисельні константи

• Змінні Boolean