Доброго часу, дорогі читачі. Як Ви зрозуміли із заголовка, мова піде про підключення передньої панелі та роз'ємів мат.плати до корпусу або навпаки.

Це стаття, яка є невеликим доповненням до колись написаного матеріалу про складання комп'ютера під однойменною назвою "Збираємо комп'ютер своїми руками" або "Що є що в комп'ютері, частина 2".

Йтиметься про невеликий втрачений, але важливий елемент, - підключення роз'ємів (всяких там кнопочок, лампочок тощо) передньої панелі.

Поїхали.

Підключення передньої панелі - інструкція з підключення

На передній панелі системного блоку зазвичай знаходяться кнопки живлення та ручне перезавантаження комп'ютера. Їх також потрібно правильно підключити до . Кабелі підключення зазвичай виконані у вигляді пінів (що таке піни дивіться вище).

Вони виглядають приблизно так (клікабельно):

Power SW – кабелек кнопки включення; Power LED + - - кабелі індикатора (лампочки) живлення; HDD LED – кабель індикатора завантаження (та сама лампочка, яка зазвичай блимає); RESET SW – кабель кнопки перезавантаження.

Правильне підключення передньої панелі підключення теж важливе, тому що без цього комп'ютер просто не ввімкнеться.

На кожній материнській платі розташований так званий блок контактів Front panel або скорочено F-Panel. Зазвичай він знаходиться у правому нижньому кутку плати, але бувають і винятки. Ось так він виглядає приблизно:

Підключення передньої панелі та її пінів здійснюється вручну і для цього в супровідних документах до материнської плати обов'язково є підказки.

Якщо документи є, підключити піни не складно. Якщо ні, то на материнській платі навколо або поряд з блоком F-Panel знаходяться підказки. Якщо Вам пощастило багаторазово, то в комплекті з мат.платою є такий перехідник:

У який Ви просто встромляєте, як показано вище, самі роз'єми, а потім цей перехідник у мат.плату і все виходить швидко і просто. Але щастить так далеко не всім, та й, напевно, Ви потрапили сюди тому, що намагаєтеся підключити все для вже колишньої (а не нової) материнської плати.

Що ще варто знати

Крім того, на передній панелі системного блоку іноді бувають інтерфейсні роз'єми USB (зазвичай їх пара штук) та порти підключення навушників/колонок та мікрофона. Виглядає це приблизно так:

Кабелі-піни, для підключення цих зовнішніх USB-портів, усередині системного блоку виглядають так:

Підключаються вони до блоків пінів на материнській платі, які називаються F-USB1 і F-USB2 відповідно (виглядати за кольором і розташуванням можуть не зовсім так, як на скріншоті нижче, але за формою і кількістю штирьків все теж саме):

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

Підключити їх просто (в інші блоки пінів вони просто не влізуть). Але й для них у супровідних документах до мат-плати теж є підказки:

Власне все і нічого складного в цьому немає.

Що робити, якщо не збереглося документації до мат.

Або візьміть лупу та уважно вивчіть згаданий вище роз'єм для підключення на материнській платі комп'ютера:

Зазвичай він хоч якось, але символічно підписаний, рази так з другого чи третього можна вгадати, що там до чого і підключити все коректно. Провід підключаються, як правило, написом на себе:

Іноді другий ряд (далекий) дивиться написами в інший бік, але таке зустрічається досить рідко. Так чи інакше, як я писав вище, не з першого, так з другого разу – вгадаєте:)

Якщо ж нічого не можете розглянути (мало зір слабке або написи погано прописані), то відкриваєте сайт виробника мат.плати і там шукаєте розділ "Підтримка" (або типу того), де зазвичай можна завантажити інструкцію від мат.плати, де завжди описано підключення.

Якщо знайти на сайті виробника не вдалося, то в інтернеті можна знайти за запитом "назва плати" + слово manual, при мінімальному знанні англійської місце для завантаження обов'язково знайдете, а там вже справу відкрити, подивитися та підключити.

Післямова

Якщо є якісь питання чи доповнення, - пишіть у коментарях чи за допомогою . Радий допомогти і просто вислухати Вас.

PS: Представлене на малюнках показано виключно для прикладів та ознайомлення. Жодної реклами.
PS2 : Стаття написана людиною, яка мешкає в мережі під ніком (друга та помічника проекту). За що йому велике спасибі.

Інструкція

Кнопки бувають різні, але вони виконують одну функцію - фізично з'єднують (або, навпаки, розривають) між собою провідники задля забезпечення електричного контакту. У найпростішому випадку – це з'єднання двох провідників, є кнопки, які з'єднують більшу кількість провідників.
Деякі кнопки після натискання залишають провідники з'єднаними (кнопки, що фіксуються), інші - відразу ж після відпускання розмикають ланцюг (не фіксуються).
Також кнопки ділять на нормально розімкнені та нормально замкнуті. Перші при натисканні замикають ланцюг, другі – розмикають.
Зараз знайшов широке застосування тип кнопок, які називають тактові кнопки. Тактові - немає від слова " такт " , а від слова " тактильний " , т.к. натискання добре відчувається пальцями. Це кнопки, які при натисканні замикають електричне коло, а при відпусканні - розмикають.

Кнопка - дуже простий і корисний винахід, що служить для кращої взаємодії людини та техніки. Але, як і все у природі, вона не ідеальна. Виявляється це в тому, що при натисканні на кнопку і її відпусканні виникає т.зв. " " ("bounce" по-). Це багаторазове перемикання стану кнопки за короткий проміжок часу (порядку кількох мілісекунд), перш ніж вона прийме стан. Це небажане явище виникає в момент перемикання кнопки через пружність матеріалів кнопки або через які виникають при електричному мікроіскр.
Побачити на власні очі можна за допомогою Arduino, що ми зробимо трохи пізніше.

Щоб підключити нормально розімкнену тактову кнопку Arduino, можна зробити найпростішим способом: один вільний провідник кнопки з'єднати з живленням або землею, інший - з цифровим виведенням Arduino. Але взагалі кажучи, це неправильно. Справа в тому, що в моменти, коли кнопка не замкнута, на цифровому виводі Ардуїно з'являтимуться електромагнітні наведення, і через це можливі помилкові спрацьовування.
Щоб уникнути наведень, цифровий висновок зазвичай підключають через досить великий резистор (10 ком) або до землі, або до живлення. У першому випадку це називається "з підтягуючим резистором", у другому - "схема зі стягуючим резистором". Давайте розглянемо кожну з них.

Спочатку підключимо до Arduino кнопку за схемою з резистором, що підтягує. Для цього один контакт кнопки з'єднаємо із землею, другий - із цифровим виходом 2. Цифровий вихід 2 також підключимо через резистор номіналом 10 кОм до живлення +5 В.

Напишемо такий скетч для обробки натискань кнопки і завантажимо в Arduino.
Тепер вбудований світлодіод на виводі 13 постійно горить, доки не натиснута кнопка. Коли натискаємо кнопку, вона приймає стан LOW, і світлодіод гасне.

Складання комп'ютера – це не тільки підключення великих компонентів системного блоку, таких як жорсткий диск, відеокарта, процесор або блок живлення. Під час складання необхідно з'єднати з «начинками» комп'ютера і сам корпус. На корпус виведено декілька важливих елементів. Як мінімум, це кнопки живлення та перезавантаження, а також індикатор роботи жорсткого диска. Якщо йдеться про більш просунуті корпуси, то на передню панель можуть бути виведені деякі роз'єми, зокрема, USB та входи для навушників або мікрофона. У цьому розділі ми розповімо, як підключити передню панель комп'ютера, щоб усі елементи у ній працювали грамотно.

Спочатку слід зазначити, що від корпусу комп'ютера має відходити кілька проводів. У народі називають «пінами» від англійського слова Pin, що означає «Штифт» або «Булавка». Проводи корпусу комп'ютера мініатюрні, і є роз'ємами, у яких вставляються штекери, розташовані на материнській платі комп'ютера.

Перед тим як розпочинати безпосередньо підключення передньої панелі комп'ютера до материнської плати, необхідно визначитися з тим, який провід за виконання якого завдання відповідає. Щоб це зробити, достатньо подивитися на написи, нанесені на роз'єми. На них можна виявити такі позначення:


Вище перераховані стандартні назви. Роз'єм, що відповідає за USB, може бути підписаний – USB 2.0 та USB 3.0. Якщо вони підписані обидва як USB, то визначити роз'єм від швидшого протоколу передачі даних легко – він має більше входів.

Передня панель комп'ютера: підключення кнопок живлення та індикації

У підключенні передніх кнопок та індикацій до материнської плати комп'ютера немає нічого складного. Щоб це зробити, необхідно:

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

Передня панель комп'ютера: підключення USB-роз'ємів і 3,5 мм

Підключаючи роз'єми на передній панелі комп'ютера, слід керуватися такими ж правилами: пошук місця для підключення в інструкції та подальше з'єднання штекера з роз'ємом. Зверніть увагу, що далеко не завжди на материнській платі може бути місце для підключення переднього роз'єму USB 3.0. Якщо його увімкнути нікуди, доведеться залишити непідключеним.

Варто зазначити, що роз'єми для підключення звукових виходів можуть входити до загального блоку з передньою індикацією та кнопками включення, а можуть бути окремо на материнській платі. USB роз'єм завжди знаходяться окремо, і місце їх підключення на материнській платі підписано позначеннями F_USB, JUSB або USB 3.0. Перші два варіанти характерні для роз'єму USB 2.0, який підключається через 10 контактів, тоді як роз'єм 3.0 вимагає 20 контактів.

Помилитись у процесі підключення кнопок, роз'ємів та індикацій з передньої панелі досить складно. Головне при виконанні даних робіт - акуратність, оскільки шкетери для передніх роз'ємів на материнській платі дуже тонкі, і зайве зусилля може вивести їх з ладу.

І Arduinoтут не є винятком, після того, як блимає світлодіодом пробує підключати кнопку і керувати з її допомогою миготінням цього самого світлодіода. Особливо складного тут нічого немає, але є один нюанс, званий «брязкіт контактів». Про те, як правильно підключати кнопку до Arduino, що таке «брязкіт контактів», як цей ефект проявляється і методах боротьби з ним і піде сьогодні мова.

Найпростіша схема підключення кнопки до мікроконтролера виглядає так:

Якщо ключ S 1розімкнуто (кнопка відпущена), то на цифровому вході D inмікроконтролера ми матимемо напругу 5В, що відповідає логічній одиниці. При натиснутій кнопці вхід D inпідключається до землі, що відповідає рівню логічного нуля і вся напруга у нас впаде на резисторі R 1, Величина якого вибирають виходячи з того, щоб при натиснутій кнопці через нього протікав не занадто великий струм (зазвичай порядку 10÷100 кОм).

Якщо ж просто підключити кнопку між цифровим входом та землею (без резистора) R 1, підключеного до +5В) або між входом і +5В, то в положенні, коли кнопка не натиснута на цифровому вході мікроконтролера буде невизначена напруга (може відповідати рівню 0, а може і 1) і ми б зчитували випадкові стани. Тому використовується резистор R 1, який, як то кажуть, «підтягує» вхід до +5В при відпущеній кнопці.

Зчитуючи стан цифрового входу мікроконтролера, ми зможемо визначити натиснуту кнопку (стан логічного 0) або ні (отримуватимемо на вході логічну одиницю).

Підключення кнопки до Arduino

Мікроконтролери Atmel AVR ATmega(на базі яких і будується Arduino) мають вбудовані програмно підключаються навантажувальні резистори R нвеличиною 20 ком і ми можемо скористатися ними, спростивши схему підключення.

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

Приклад скетчу Arduino, який включає та вимикає вбудований світлодіод на 13 піні, залежно від того, натиснута або відпущена кнопка, підключена до другого піну, використовуючи внутрішній резистор навантаження:

void setup() ( pinMode(13, OUTPUT); //світлодіод на 13 піні pinMode(2, INPUT); //2 пін - в режимі входу. Кнопка підключена до землі. digitalWrite(2, HIGH); //підключаємо підтягуючий резистор) void loop() (digitalWrite(13, !digitalRead(2)); // зчитуємо стан кнопки і перемикаємо світлодіод)

Тут ми інвертуємо значення, зчитане з вхідного порту, шляхом використання логічного НЕ, що позначається знаком оклику перед функцією digitalRead, тому що при натиснутій кнопці ми зчитуємо 0, а для включення світлодіода до порту нам потрібно відправити 1.

Брязкіт контактів

Все б нічого, якби ми жили в ідеальному світі з ідеальними кнопками. Реальні механічні контакти, які присутні в кнопках, ніколи не замикаються і не розмикаються миттєво. Протягом нетривалого проміжку часу відбувається багаторазове замикання та розмикання контактів ключа (кнопки) внаслідок чого на вхід мікроконтролера надходить не одиничний перепад напруги, а ціла пачка імпульсів. Це явище носить назву «брязкіт контактів».

У прикладі вище, коли за допомогою кнопки ми просто вмикали і вимикали світлодіод, ми не помітили це, тому що вмикання/вимкнення світлодіода в момент «брязкоту» відбувалося дуже швидко і ми просто не побачили це оком.

Ця бібліотека включає такі методи:

  • Bounce ()- Ініціалізація об'єкта Bounce
  • void interval (unsigned long interval)— встановлює час антибрязкоту в мілісекундах
  • void attach (int pin)- Встановлює пін, до якого підключена кнопка і підключає на цьому висновку вбудований підтягуючий резистор
  • int update()— оскільки Bounceне використовує, ви «оновлюєте» об'єкт до того, як зчитуєте його стан і це потрібно робити постійно (наприклад, усередині loop). Метод update оновлює об'єкт та повертає TRUE(1), якщо стан піна змінився (кнопка була натиснута або ж, навпаки, відпущена) і FALSE(0) інакше. Виклик методу update всередині loopнеобхідно проводити лише один раз.
  • int read()- Повертає оновлений стан піна

За промовчанням бібліотека Bounce використовує інтервал стабілізації ( stable interval) для реалізації антибрусків. Це простіше для розуміння і дозволяє не знати тривалість брязкоту.

Параметр stable intervalбібліотеки Bounce

Визначивши

#define BOUNCE_LOCK-OUT

#define BOUNCE_LOCK-OUT

у файлі Bounce.hможна включити альтернативний метод боротьби з брязкотом. Цей метод дозволяє швидше реагувати на зміну стану кнопки, проте, вимагає встановити тривалість брязкоту, а ця величина, як я зазначив вище, збільшується з плином часу, а значить, потрібно вносити зміни в код, або встановити свідомо більше значення.

Наведу приклад використання цієї бібліотеки:

#include Bounce bouncer = Bounce (); void setup() ( pinMode(2 ,INPUT); // кнопка на піні 2 digitalWrite(2 ,HIGH); bouncer .attach(2); // встановлюємо кнопку bouncer .interval(5); Serial.begin(9600); //установка Serial-порту на швидкість 9600 біт/сек) void loop() ( if (bouncer.update()) ( //якщо сталася подія if (bouncer.read()==0) ( //якщо кнопка натиснута Serial .println("pressed"); //виведення повідомлення про натискання ) else Serial.println("released"); //виведення повідомлення про відпускання ) )

#include

Bounce bouncer = Bounce (); //Створюємо екземпляр класу Bounce

void setup()

pinMode (2, INPUT); // кнопка на піні 2

digitalWrite (2, HIGH); // Підключаємо вбудований підтягуючий резистор

bouncer. attach (2); // встановлюємо кнопку

bouncer. interval (5); // Встановлюємо параметр stable interval = 5 мс

Serial. begin (9600); //Установка Serial-порту на швидкість 9600 біт/сек

void loop ()

if (bouncer . update () )

{ //якщо сталася подія

if (bouncer. read () == 0)

{ //якщо кнопка натиснута

Serial. println ("pressed"); //виведення повідомлення про натискання

else Serial. println ("released"); //висновок повідомлення про відпускання

І ще один невеликий практично корисний приклад. Нехай у нас є кнопка, при тривалості натискання якої менше 2 секунд відбувається зміна змінної current_mode, де зберігається поточний режим роботи деякого пристрою. У цьому прикладі режим змінюватиметься від 0 до 5. Один раз натиснули – режим має номер 1. Ще раз натиснули – 2. І так до п'яти. Після п'яти після чергового натискання поточний режим стає першим і знову по колу. Якщо ж утримувати кнопку в натиснутому стані понад 2 секунди змінної current_modeнадається значення 0.

#include #define pressed_long 2000 // довготривале натискання = 2 секунди #define num_modes 5 // максимальний номер режиму short int max_mode = num_modes + 1; // Допоміжна змінна Bounce bouncer = Bounce (); //створюємо екземпляр класу Bounce unsigned long pressed_moment; // момент натискання кнопки int current_mode = 0; // поточний режим void setup() ( pinMode(2 ,INPUT); // кнопка на піні 2 digitalWrite(2 ,HIGH); // підключаємо вбудований підтягуючий резистор bouncer .attach(2); // встановлюємо кнопку bouncer .interval( 5); // встановлюємо параметр stable interval = 5 мс Serial.begin(9600); подія if (bouncer.read()==0) ( //якщо кнопка натиснута pressed_moment = millis(); // запам'ятовуємо час натискання ) else ( // кнопка відпущена if((millis() - pressed_moment))< pressed_long) { // если кнопка была нажата кратковременно current_mode++; // увеличиваем счетчик текушего режима current_mode %= max_mode; // остаток от целочисленного деления if (current_mode == 0) current_mode = 1; // режим меняется от 1 до num_modes } else { // кнопка удерживалась долго current_mode = 0; pressed_moment = 0; // обнуляем момент нажатия } Serial.println("Current mode:"); Serial.println(current_mode); // выводим сообщение о текущем режиме } } }

#include

#define pressed_long 2000 // Довготривале натискання = 2 секунди

#define num_modes 5 // максимальний номер режиму

short int max_mode = num_modes + 1; // Допоміжна змінна

Bounce bouncer = Bounce (); //Створюємо екземпляр класу Bounce

unsigned long pressed_moment ; // момент натискання кнопки

int current_mode = 0; // поточний режим

void setup()

pinMode (2, INPUT); // кнопка на піні 2

digitalWrite (2, HIGH); // Підключаємо вбудований підтягуючий резистор

bouncer. attach (2); // встановлюємо кнопку

bouncer. interval (5); // Встановлюємо параметр stable interval = 5 мс

Перша програма має керувати світлодіодом за допомогою кнопки:

  • при натиснутій кнопці світлодіод світиться;
  • при віджатій кнопці світлодіод не світиться.

Підключення кнопки та світлодіода до плати Ардуїно.

Для зв'язку із зовнішніми елементами в контролері Arduino UNO існує 14 цифрових висновків. Кожен висновок можна визначити програмою як вхід чи вихід.

У цифрового виходу є лише два стани високий та низький. Високий стан відповідає напрузі на виході близько 5 В, низький стан – 0 В. Вихід допускає підключення навантаження зі струмом до 40 мА.

Коли висновок визначений як вхід, вважаючи його стан, можна визначити рівень напруги входу. При напрузі близькому до 5 (реально більше 3) буде раховано високий стан, відповідне константі HIGH. При напрузі близькому до 0 (менше 1,5 В) буде зчитано низький стан, або константа LOW.

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

Світлодіод підключається через резистор, що обмежує струм. Ось типова схема.

Резистор розраховується за формулою I = Uвиходу - Uпадіння на світлодіоді / R.

Uвиходу = 5, Uпадіння на світлодіоді можна прийняти рівним 1,5 В (точніше вказується в довіднику). Виходить, то у нашій схемі струм через світлодіод заданий на рівні 10 мА.

Ви можете вибрати будь-який висновок, але я пропоную для простоти з'єднань використовувати світлодіод, встановлений на платі. Той самий, що блимав у першому тестовому прикладі. Він підключений до цифрового висновку 13. У цьому випадку додатковий світлодіод до плати не треба підключати.

Кнопку підключаємо до будь-якого іншого висновку, наприклад, 12. Апаратна частина схеми підключення кнопки повинна забезпечувати рівні напруги 0 при натиснутій кнопці і 5 при вільної. Це можна зробити простою схемою.


При відтиснутій кнопці резистор формує на виведенні 5, а при натиснутій - вхід замикається на землю. Рекомендації щодо вибору резистора я напишу в заключному уроці про кнопки. Наразі запропоную інший варіант. Усі висновки плати мають усередині контролера резистори, підключені до 5 У. Їх можна програмно вмикати чи відключати від висновків. Опір цих резисторів близько 20-50 кОм. Занадто багато для реальних схем, але для нашої програми та кнопки, встановленої поблизу контролера, цілком допустимо.

У результаті схема підключення виглядатиме так.


Кнопку можна припаяти на дротах до гнізда. Я встановив її на макетну плату без паяння. Купив спеціально для демонстрації уроків.

Функції керування введенням/виводом.

Для роботи з цифровими висновками у системі Ардуїно є 3 вбудовані функції. Вони дозволяють встановити режим виводу, рахувати чи встановити висновок у певний стан. Для визначення стану висновків у цих функціях використовуються константи HIGH та LOW, які відповідають високому та низькому рівню сигналу.

pinMode(pin, mode)

Встановлює режим виведення (вхід або вихід).

Аргументи: pin та mode.

  • pin – номер виведення;
  • mode – режим виводу.

Функція нічого не повертає.

digitalWrite(pin, value)

Встановлює стан виходу (високий або низький).

Аргументи pin та value:

  • pin – номер виведення;
  • value – стан виходу.

Функція нічого не повертає.

digitalRead(pin)

Зчитує стан входу.

Аргументи: pin – номер виведення.

Повертає стан входу:

digitalRead(pin) = LOW низький рівень на вході
digitalRead(pin) = HIGH високий рівень на вході

Програма керування світлодіодом.

З урахуванням попереднього уроку тепер ми маємо всю необхідну інформацію для написання програми. Програма Ардуїно складається з двох функцій setup() і loop. У setup() ми встановлюємо режими висновків, а loop() зчитуємо стан кнопки в змінну buttonState і передаємо його на світлодіод. По дорозі інвертуємо, т.к. при натиснутій кнопці низький стан сигналу, а світлодіод світиться за високого.

/* Програма scetch_5_1 уроку 5
*/

boolean buttonState; // створюємо глобальну змінну buttonState

void setup() (
pinMode(13, OUTPUT); //

}

// безкінечний цикл
void loop() (



}

Для зберігання проміжного значення стану кнопки створюється змінна buttonState з типом boolean. Це логічний тип даних. Змінна може набувати одне з двох значень: true (істинно) або false (хибно). У нашому випадку – світлодіод світиться і не світиться.

Скопіюйте або перепишіть програмний код у вікно Arduino IDE. Завантажте в контролер та перевірте.

Для збереження проектів Ардуїно я створив папку d: Arduino Projects Lessons Lesson5. У кожному уроці програми називаю scetch_5_1, scetch_5_2, … Ви можете надходити або ввести свою систему збереження файлів.

Блок програми:

buttonState = digitalRead(12); // зчитуємо стан 12 входу (кнопки) і записуємо в buttonState
buttonState = ! buttonState; // інверсія змінної buttonState
digitalWrite(13, buttonState); // записуємо стан з buttonState на вихід 13 (світлодіод)

Можна записати без використання проміжної змінної buttonState.

digitalWrite(13, ! digitalRead(12));

Як аргумент для функції digitalWrite() виступає функція digitalRead(). Хороший стиль це такий варіант. Не потрібні додаткові змінні, менший текст.

Тобто. функцію можна використовувати як аргумент іншої функції. Функції можна викликати із функцій.

Інший варіант цієї програми, що використовує умовний оператор if.

/* Програма scetch_5_2 уроку 5
Запалює світлодіод (виведення 13) при натисканні кнопки (виведення 12) */

void setup() (
pinMode(13, OUTPUT); // визначаємо висновок 13 (світлодіод) як вихід
pinMode(12, INPUT_PULLUP); // визначаємо висновок 12 (кнопка) як вхід
}

// безкінечний цикл
void loop() (
if (digitalRead(12) == LOW) digitalWrite(13, HIGH);
else digitalWrite(13, LOW);
}

У нескінченному циклі перевіряється стан виведення 12 (кнопка), і якщо він низький (LOW), то на виводі 13 (світлодіод) формується високий стан (HIGH). В іншому випадку стан світлодіода низький (LOW).

Директива #Define.

У всіх прикладах для функцій вводу/виводу ми вказували аргумент pin, визначальний номер виведення, як конкретного числа - константи. Ми пам'ятали, що константа 12 – це номер виведення кнопки, а 13 – номер виведення світлодіода. Набагато зручніше працювати із символьними іменами. Для цього у мові C існує директива, що зв'язує ідентифікатори з константами, виразами.

Директива #define визначає ідентифікатор і послідовність символів, яка підставляється замість ідентифікатора кожного разу, коли він зустрічається в тексті програми.

Загалом вона виглядає так:

#define ім'я послідовність_символів

Якщо у наших програмах ми напишемо:

#define LED_PIN 13 //

то щоразу, коли у програмі зустрінеться ім'я LED_PIN, при трансляції замість нього буде підставлено символи 13. Функція включення світлодіода виглядає так:

digitalWrite(LED_PIN, HIGH);

Остаточний варіант програми за допомогою #define.

/* Програма уроку 5
Запалює світлодіод (виведення 13) при натисканні кнопки (виведення 12) */

#define LED_PIN 13 // номер виведення світлодіоду дорівнює 13
#define BUTTON_PIN 12 // номер виведення кнопки дорівнює 12

void setup() (
pinMode(LED_PIN, OUTPUT); // визначаємо висновок 13 (світлодіод) як вихід
pinMode(BUTTON_PIN, INPUT_PULLUP); // визначаємо висновок 12 (кнопка) як вхід
}

// безкінечний цикл
void loop() (
digitalWrite(LED_PIN, !digitalRead(BUTTON_PIN));
}

Зауважте, що після директиви #define точка з комою не ставиться, тому що це псевдо оператор. Він не робить жодних дій. Директива визначає константи, тому прийнято імена для неї писати у верхньому регістрі з роздільником - нижнє підкреслення.

У наступному уроці боротимемося з брязкотом кнопки, розіб'ємо програму на блоки і створимо інтерфейс зв'язку між блоками.