Заняття 1. Знайомство з Arduino

Arduino — це програмований мікроконтролер відкритого стандарту, який має власне середовище програмування, з мовою програмування заснованою на C. Завдяки тому, що будь хто може абсолютно легально випускати як самі контролери, так і обладнання для них, Arduino став дуже популярним у світі і особливо в освітніх закладах. Мова програмування дуже проста, доступна навіть дітям. Вже є тисячі готових прикладів та модулів для Arduino доступних для вільного завантаження.

Якщо казати дуже просто, то Arduino — це маленький комп’ютер з власною пам’яттю, який здатний зберігати програми та має універсальні входи/виходи для приймання і передавання інформації та керувальних сигналів. Для майбутнього робота і будь-якого іншого інтелектуального приладу, ця плата буде слугувати мозком, куди стікається вся інформація і де приймаються рішення. Тому першим кроком до створення робота — буде опанування вмінням створювати програми для цього “мозку”.

Зручна для використання в навчанні та недорога плата — це Arduino UNO, зображена на рис. 1.1. Вона є гарним варіантом для початку знайомство з Arduino. Далі в посібнику буде використовуватись саме вона. Слід зазначити, що описані програми, будуть також працювати на інших варіантах Arduino.

Рис. 1.1 Контакти Arduino UNO

Для першого заняття нам будуть потрібні: контролер Arduino, світлодіод, шнур USB A->B (такий самий, як і той, що використовують для підключення принтера) та комп’ютер з встановленим середовищем розробки Arduino IDE (доступне для завантаження на сайті https://www.arduino.cc/ ). Драйвер для Windows, починаючи з сьомої версії, буде встановлений автоматично, для деяких неоригінальних плат драйвер доступний на сайті постачальника.

Для створення схеми випробування першої робочої програми (яка в Arduino має назву скетч) достатньо просто вставити світлодіод у плату так, що довша ніжка (зазвичай це “+” діода) опинилась у цифровому виході №13, а друга — коротша, у вході “GND”. Ці виходи знаходяться поряд дивисться Рис 1.1.

Це виглядатиме приблизно так, як на рис. 1.2

Arduino світлодіод на 13 pin
Рис. 1.2 Устаткування першого заняття

Відкриваємо Arduino IDE і бачимо приблизно наступне (Рис. 1.3):


Згодом ми будемо використовувати більшість функцій цього вікна, а поки що давайте подивимось в редактор. Там вже є дві функції вбудованої мови програмування Arduino, а саме функції setup() та loop(). Функція setup() вмикається один раз при вмиканні плати, а функція loop() циклічно виконується весь поки Arduino працює. Те, чому передує // – коментар, він виділений у редакторі сірим кольором і ніяк не впливає на роботу програми. Наше завдання сьогодні змусити блимати світлодіод. Нехай для початку він вмикається на 1 секунду, а потім згасає також на 1 секунду.

Раніше ми вже казали, що світлодіод підключений до цифрового виходу №13, тепер треба вказати контролеру, що саме цей вивід ми будемо використовувати для виводу інформації. Змінювати призначення виводу нам більше одного разу не потрібно, тому усередині функції setup(), тобто між фігурних дужок “{“ та “}” цієї функції, ми напишемо наступне:

pinMode(13, OUTPUT);

Функція pinMode() встановлює режим роботи цифрових входів/виходів. Перший параметр у дужках — це номер виходу, а другий — встановлюваний режим його роботи INPUT (для приймання сигналу) або OUTPUT (для передавання сигналу).

Після встановлення режиму, нам необхідно увімкнути напругу на виході, в термінах Arduino – це високий рівень сигналу, для цього пишемо всередині функції loop() наступне:

digitalWrite(13, HIGH);

Тільки що ми перемкнули цифровий вихід №13 у режим HIGH, тобто встановили на ньому рівень напруги +5 В, відносно рівня землі (GND — в позначках Arduino).

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

Тепер секунду потримаємо високий рівень на 13 виході, за допомогою функції delay(), яка встановлює затримку в роботі контролера у мілісекундах (1000 мілісекунд — це секунда). Після цього встановлюємо на 13 виході рівень сигналу LOW (низький) за допомогою вже знайомої функції digitalWrite() і на секунду вимикаємо світлодіод. Весь код у фігурних дужках функції loop() :

digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);

Остаточно скетч виглядатиме так:

Рис. 4: Перший скетч “Блимання світлодіода”

Наш перший скетч готовий і можна завантажити його у пам’ять контролера. Під’єднаємо наш Arduino до комп’ютера за допомогою USB кабелю. Перевіримо, чи бачить комп’ютер контролер. Для цього натискаємо пункт меню “Інструменти” і вибираємо у розділі плата тип контролера такий, який зараз підключений до комп’ютера (Рис. 5). У моєму випадку це Arduino UNO.

Рис. 5: Вибір плати

Так само вибираємо порт, до якого підключений контролер. Якщо все добре, то саме порт підключення буде у списку. Якщо порт не з’явився, то треба перевірити встановлені драйвери у системі.

Вивантажуємо скетч (програму) у контролер. Для цього скористаємось кнопкою “Вивантажити” у верхній частині редактора (рис. 6)

Рис. 6: Кнопка “Вивантажити”

Ліворуч від кнопки “Вивантажити” знаходиться кнопка “Перевірити”, яка перевіряє скетч на помилки. При натисканні “Вивантажити” перевірка відбувається автоматично перед вивантаженням програми у контролер.

Скетч не буде завантажений, якщо в ньому є помилки. В такому випадку компілятор видасть вам, де він бачить помилку в нижній частині вікна. Наприклад на Рис. 8, помилка у другому рядку. Це пропущена “;” після виклику функції. Зверніть увагу, що сама помилка знаходиться у другому рядку, а компілятор вказує на третій. Це тому, що він очікує крапку з комою перед дужкою.


Рис. 7: Помилка у 2-му рядку

Виправте помилки і спробуйте завантажити скетч знову, в разі успіху ви побачите повідомлення “Вивантаження виконано” схоже на те, що на Рис. 8

Рис. 8: Успішне вивантаження


Рис. 8: Успішне вивантаження
Тепер можна ускладнити завдання і змусити блимати світлодіод із різними інтервалами загоряння і згасання, змінюючи затримку у функції delay().

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

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

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

void setup() {
     pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);  
    delay(1000);                      
  digitalWrite(13, LOW);    
    delay(500);   
  digitalWrite(13, HIGH);  
    delay(1000);                      
  digitalWrite(13, LOW);    
    delay(500);   
  digitalWrite(13, HIGH);  
    delay(1000);                      
  digitalWrite(13, LOW);    
    delay(500);   
  digitalWrite(13, HIGH);  
    delay(500);                      
  digitalWrite(13, LOW);    
    delay(500);
  digitalWrite(13, HIGH);  
    delay(500);                      
  digitalWrite(13, LOW);    
    delay(500); 
  digitalWrite(13, HIGH);  
    delay(500);                      
  digitalWrite(13, LOW);    
    delay(500); 
}

Додаткове завдання. Поміняйте інтервали затримки так, щоб діод блимав швидче, а потім, щоб він робив це повільніше.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *