Arduino: що можна зробити за його допомогою. Arduino для початківців: покрокові інструкції. Програмування та проекти Arduino: з чого почати? Конструкції на ардуїно

У цій статті я вирішував зібрати повне покрокове керівництводля початківців Arduino. Ми розберемо що таке ардуїно, що потрібно для початку вивчення, де завантажити і як встановити та настроїти середовище програмування, як влаштований і як користуватися мовою програмування та багато іншого, що необхідно для створення повноцінних складних пристроїв на базі сімейства цих мікроконтролерів.

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

Що таке Arduino і для чого воно потрібне?

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

За допомогою ардуїно можна навчатися програмування, електротехніки та механіки. Але це не просто навчальний конструктор. На його основі ви зможете зробити справді корисні пристрої.
Починаючи з простих мигалок, метеостанцій, систем автоматизації та закінчуючи системою розумного будинку, ЧПУ верстатами та безпілотними літальними апаратами. Можливості не обмежуються навіть вашою фантазією, тому що є безліч інструкцій та ідей для реалізації.

Стартовий набір Arduino

Для того щоб почати вивчати Arduino необхідно придбати саму плату мікроконтролера і додатковими деталями. Найкраще придбати стартовий набір Ардуїно, але можна і самостійно підібрати все необхідне. Я раджу вибрати набір, тому що це простіше і найчастіше дешевше. Ось посилання на кращі набори та на окремі деталі, які обов'язково стануть вам у нагоді для вивчення:

Базовий набір ардуїно для початківців:Придбати
Великий набір для навчання та перших проектів:Придбати
Набір додаткових датчиків та модулів:Придбати
Ардуїно Уно - найбільш базова та зручна модель з лінійки:Придбати
Безпайкова макетна плата для зручного навчання та прототипування:Придбати
Набір проводів із зручними конекторами:Придбати
Комплект світлодіодів:Придбати
Комплект резисторів:Придбати
Кнопки:Придбати
Потенціометри:Придбати

Середа розробки Arduino IDE

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

Версія Windows Mac OS X Linux
1.8.2

Мова програмування Ардуїно

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

Для програмування Arduino використовують спрощену версію мови C++ з визначеними функціями. Як і в інших Cі-подібних мовах програмування є ряд правил написання коду. Ось базові з них:

  • Після кожної інструкції необхідно ставити знак крапки з комою (;)
  • Перед оголошенням функції необхідно вказати тип даних, що повертається функцією або void, якщо функція не повертає значення.
  • Також необхідно вказувати тип даних перед оголошенням змінної.
  • Коментарі позначаються: // Рядковий та / * блоковий * /

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

Всі прошивки для Arduino повинні містити щонайменше 2 функції. Це setup() та loop().

Функція Setup

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

// Змінні з пінами підключених пристроїв int switchPin = 8; int ledPin = 11; // Змінні для зберігання стану кнопки та світлодіода boolean lastButton = LOW; boolean currentButton = LOW; boolean ledOn = false; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // функція для придушення брязкоту boolean debounse(boolean last) ( boolean current = digitalRead(switchPin); if(last != current) ( dela (5); current = digitalRead(switchPin); ) return current; ;digitalWrite(ledPin, ledOn);

// Змінні з пінами підключених пристроїв

int switchPin = 8;

int ledPin = 11;

// Змінні для зберігання стану кнопки та світлодіода

boolean lastButton = LOW;

boolean currentButton = LOW;

boolean ledOn = false;

void setup () (

pinMode (switchPin, INPUT);

pinMode (ledPin, OUTPUT);

// функція для придушення брязкоту

boolean debounse (boolean last) (

boolean current = digitalRead (switchPin);

if (last != current ) (

delay (5);

current = digitalRead (switchPin);

return current;

void loop () (

currentButton = debounse (lastButton);

if (lastButton == LOW && currentButton == HIGH ) (

ledOn = ! ledOn;

lastButton = currentButton;

digitalWrite (ledPin, ledOn);

У цьому скетчі я створив додаткову функцію debounse для придушення брязкоту контактів. Про брязкальце контактів є на моєму сайті. Обов'язково ознайомтеся із цим матеріалом.

ШИМ Arduino

Широтно-імпульсна модуляція (ШІМ) - це процес керування напругою за рахунок шпаруватості сигналу. Тобто використовуючи ШІМ ми можемо плавно керувати навантаженням. Наприклад, можна плавно змінювати яскравість світлодіода, але ця зміна яскравості виходить не за рахунок зменшення напруги, а за рахунок збільшення інтервалів низького сигналу. Принцип дії ШІМ показаний на цій схемі:

Коли ми подаємо ШИМ на світлодіод, він починає швидко запалюватися і гаснути. Людське око не здатне побачити це, оскільки частота занадто висока. Але при зйомці на відео ви швидше за все побачите моменти, коли світлодіод не горить. Це станеться за умови, що частота кадрів камери не буде кратна частоті ШІМ.

Arduino має вбудований широтно-імпульсний модулятор. Використовувати ШІМ можна тільки на пінах, які підтримуються мікроконтролером. Наприклад Arduino Uno і Nano мають по 6 ШІМ висновків: це піни D3, D5, D6, D9, D10 та D11. В інших платах піни можуть відрізнятись. Ви можете знайти опис цікавої для вас плати в

Для використання ШІМ в Arduino є функція Вона приймає як аргументи номер піна і значення ШІМ від 0 до 255. 0 - це 0% заповнення високим сигналом, а 255 - 100%. Давайте для прикладу напишемо простий скетч. Зробимо так, щоб світлодіод плавно загорявся, чекав одну секунду і так само плавно згасав і так до нескінченності. Ось приклад використання цієї функції:

// Світлодіод підключений до 11 піну int ledPin = 11; void setup() ( pinMode(ledPin, OUTPUT); ) void loop() ( for (int i = 0; i< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) ( analogWrite(ledPin, i); delay(5); ) )

// Світлодіод підключений до 11 піну

int ledPin = 11;

void setup () (

pinMode (ledPin, OUTPUT);

void loop () (

for (int i = 0; i< 255 ; i ++ ) {

analogWrite (ledPin, i);

delay (5);

delay (1000);

for (int i = 255 ; i > 0 ; i - ) (

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


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

Arduino з чого почати новачкові

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


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

Отже, переходимо до першого уроку Arduino схеми електронників-початківців.

Контролер Arduino UNO для зручності початківців вже має опір і LED-світлодіод, приєднаний до 13 виведення роз'єму, тому ніяких зовнішніх радіоелементів у першому досвіді нам не потрібно.


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

Не забувайте про фігурні дужки! Втрата хоча б однієї з них зробить весь скейтч цілком неробочим. Але і зайві дужки теж не ставте, тому що також виникне помилка.

Код скачати:
Скейтч з коментарями та поясненнями у файлі 001-1_mig-led.ino

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


Функція delay(1000) затримує обробку програми на 1000 мілісекунд. Все це йде у вічному циклі loop().

Головний висновок після сприйняття нашої першої програми на Ардуїно:За допомогою функцій void loop та void setup ми передаємо мікроконтролеру наші інструкції. Все те, що знаходиться всередині блоку setup, виконається всього один раз. Вміст модуля loop буде повторюватися в циклі до тих пір, поки залишиться включеним Arduino.

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

Замість встановлення значення в HIGH, а потім у LOW, ми отримаємо значення ledPin та проінвертуємо його. Припустимо, якщо воно було HIGH, то стане LOW і т.п.

Другий варіант коду Ардуїно для керування світлодіодомтут:

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

Схожою функцією є micros(), яка повертає кількість мікросекунд, що минуло з моменту запуску програмного коду Функція повернеться в нуль через 70 хвилин роботи програми.

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

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

Початок цієї програми такий самий, як і в будь-якого іншого стандартного скетчу Arduino.


У цьому прикладі використовується два цифрові введення-виведення Arduino. Світлодіод приєднується до 8 піну, який налаштований як OUTPUT. До 9 через підключено кнопку, яка налаштована як INPUT. Коли натискаємо кнопку пін 9 встановлюється в HIGH, і програма перемикає висновок 8 в HIGH, цим включаючи світлодіод. Відпускання кнопки скидає дев'ятий висновок стан LOW. Потім код перемикає висновок 8 LOW, відключаючи світловий індикатор.

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

Arduino UNO має три порти: B(цифрові входи/виходи з 8 по 13); C(аналогові входи); D(цифрові входи/виходи з 0 по 7)

Кожен порт здійснює керування трьома регістрами. Перший DDR задає чим буде pin входом або виходом. За допомогою другого регістру PORT можна задати pin у стан HIGH або LOW. За допомогою третього можна вважати інформацію про стан ніжок Arduino, якщо вони працюють на вхід.

Для роботи схеми використовуємо порт B. Для цього встановимо всі ніжки порту як цифрові виходи. У порту B всього 6 ніжок. Біти регістру DDRB повинні бути задані в "1" , якщо пін буде використовуватися як вихід (OUTPUT), і в "0" якщо пін плануємо застосовувати як вхід (INPUT). Біти портів нумеруються з 0 по 7, але не мають всі 8 пінів.

Допустимо: DDRB = B00111110;// встановити ніжки порту з 1 по 5 як виходу, а 0 як вхід.

У нашій схемі вогнів, що біжать, ми задіємо п'ять виходів: DDRB = B00011111; // Встановити піни порту з 0 по 4 як виходи.

Для запису даних у порт необхідно задіяти регістр PORTB. Запалити перший світлодіод можна за допомогою команди, що управляє: PORTB = B00000001;, перший і четвертий LED: PORTB = B00001001і т.п

Існує два оператори двійкового зсуву: вліво та вправо. Оператор зсуву вліво змушує всі біти даних переміститися вліво, відповідно оператор зсуву вправо, переміщує їх вправо.

Приклад:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

Тепер повернемося до вихідного коду нашої програми. Нам потрібно запровадити дві змінні: upDownбуде включати значення куди рухатися - вгору або вниз, а друга cylonвкаже які Led запалювати.

Конструктивно такий світлодіод має один загальний висновок та три виводи для кожного кольору. Нижче показано схему підключення RGB-світлодіода до плати Arduino із загальним катодом. Усі резистори використовуються у схемі для підключення повинні бути одного номіналу від 220-270 Ом.


Для підключення із загальним катодом схема підключення триколірного LED буде майже аналогічна, за винятком того, що загальний висновок буде підключений не до землі (gnd на пристрої), а до висновку +5 вольт. Висновки Червоний, зелений та синій в обох випадках підключаються до цифрових виходів контролера 9, 10 та 11.

До дев'ятого піну Arduino UNO підключимо зовнішній світлодіод через опір 220 Ом. Для плавного керування яскравістю останнього застосуємо функцію analogWrite(). Вона забезпечує виведення ШІМ-сигналу на ніжку контролера. Причому команду pinMode()викликати не потрібно. Т.к analogWrite(pin,value)включає два параметри: pin – номер ніжки для виведення, value – значення від 0 до 255.

Код:
/*
Навчальний приклад ардуїнщика-початківця, розкриває можливості команди analogWrite() для реалізації Fade-ефекту світлодіода
*/
int brightness = 0; // яскравість LED
int fadeAmount = 5; // крок зміни яскравості
unsigned long currentTime;
unsigned long loopTime;

Void setup() (
pinMode(9, OUTPUT); // встановлюємо 9 пін як вихід
currentTime = millis();
loopTime = currentTime;
}

Void loop() (
currentTime = millis();
if(currentTime >= (loopTime + 20))(
analogWrite(9, brightness); // встановлюємо значення на 9 виводі

Brightness = brightness + fadeAmount; // додаємо крок зміни яскравості, яка встановиться у наступному циклі

// якщо досягли хв. чи макс. значення, то йдемо у зворотний бік (реверс):
if (brightness == 0 || brightness == 255) (
fadeAmount = -fadeAmount;
}
loopTime = currentTime;
}
}

Робота Arduino з енкодером

Енкодер призначений для перетворення кута повороту в електричний сигнал. З нього ми отримуємо два сигнали (А та В), які протилежні по фазі. У цьому навчальному прикладі ми будемо застосовувати енкодер SparkFun COM-09117, що має дванадцять положень на один оберт (кожне положення дорівнює 30 °). На наведеному нижче малюнку добре видно, як залежать вихід А і В один від одного під час руху енкодера за годинниковою або проти годинникової стрілки.

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

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

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

Враховуючи той факт, що в самому швидкий випадок, ми можемо повернути ручку енкодера на 180 ° за 1/10 секунд, то це буде 6 імпульсів за 1/10 секунд або 60 імпульсів в одну секунду.

Насправді швидше обертати неможливо. Так як нам необхідно відстежувати всі напівперіоди, то частота має бути близько 120 Герц. Для повної впевненості візьмемо 200 Гц.

Так як, в даному випадку, у нас використовується механічний енкодер, то можливий брязкіт контактів, а низька частота чудово відфільтровує подібний брязкіт.


За сигналами програмного таймера необхідно здійснювати порівняння поточного значення виходу А енкодера з попереднім значенням. Якщо стан змінюється від позитивного до нуля, ми опитуємо стан виходу У. Залежно від результату опитування стану ми збільшуємо чи знижуємо лічильник значення яскравості LED світлодіода. Код програми з тимчасовим інтервалом близько 5 мс (200 Гц) представлений нижче:

Код ардуїнника-початківця:
/*
** Енкодер
** Для управління яскравістю світлодіода застосовується енкодер фірми Sparkfun
*/

Int brightness = 120; // Яскравість світлодіода, починаємо з половини
int fadeAmount = 10; // крок зміни яскравості
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 12; // pin 12
const int pin_B = 11; // pin 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
void setup() (
// declare pin 9 to be an output:
pinMode(9, OUTPUT); // встановлюємо 9 висновок як вихід
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = millis();
loopTime = currentTime;
}
void loop() (
currentTime = millis();
if(currentTime >= (loopTime + 5))( // перевіряємо стани кожні 5мс (частота 200 Гц)
encoder_A = digitalRead(pin_A); // зчитуємо стан виходу А енкодера
encoder_B = digitalRead(pin_B); // Виходу В енкодера
if((!encoder_A) && (encoder_A_prev))( // якщо стан змінюється з позитивного до нульового
if(encoder_B) (
// вихід У позитивному стан, отже обертання здійснюється за годинниковою стрілкою
// збільшуємо яскравість світіння, лише до 255
if(brightness + fadeAmount)
else (
// вихід У нульовому стан, отже обертання йде проти годинникової стрілки
// знижуємо яскравість, але не нижче за нуль
if(brightness - fadeAmount >= 0) brightness -= fadeAmount;
}

}
encoder_A_prev = encoder_A; // Зберігаємо значення А для наступного циклу

AnalogWrite(9, brightness); // встановлюємо яскравість на дев'ятий пін

LoopTime = currentTime;
}
}

У цьому прикладі для початківців ми розглянемо роботу з п'єзовипромінювачем для створення звуків. Для цього візьмемо п'єзодатчик, що дозволяє генерувати звукові хвилі в діапазоні частот 20 Гц - 20 кГц.

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

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


Програма для управління проста та наочна. Починається вона з підключення файлу, що містить усі необхідні команди для керування сервоприводом. Далі ми створюємо об'єкт servo, наприклад servoMain. Наступна функція setup(), в якій ми прописуємо, що сервопривід приєднано до дев'ятого висновку контролера.

Код:
/*
Arduino Servo
*/
#include
Servo servoMain; // Об'єкт Servo

Void setup()
{
servoMain.attach(9); // Servo підключений до дев'ятого висновку
}

Void loop()
{
servoMain.write(45); // Повернути сервопривід ліворуч на 45°
delay (2000); // Очікування 2000 мілісекунд (2 секунди)
servoMain.write(0); // Повернути серво вліво на 0°
delay(1000); // Пауза 1 с.

delay (1500); // Очікування 1.5 с.
servoMain.write(135); // Повернути серво вправо на 135°
delay(3000); / / Пауза 3 с.
servoMain.write(180); // Повернути серво вправо на 180°
delay(1000); // Очікування 1 с.
servoMain.write(90); // Повернути серво на 90°. Центральна позиція
delay(5000); / / Пауза 5 с.
}

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

Схема Arduino лічильника на 7-сегментному індикаторі

Цей простий проект на Arduino для початківців полягає у створенні схеми лічильника на звичайному 7-сегментному індикаторі із загальним катодом. Програмний код, наведений нижче, дозволяє при натисканні на кнопку запускати рахунок від 0 до 9.

Семисегментний індикатор – є комбінацією 8 світлодіодів (останній відповідає за точку) із загальним катодом, які можна включати в потрібній послідовності так, щоб вони створювали цифри. Слід звернути увагу, що в даній схемі дивись малюнок нижче, висновки 3 і 8 відведені під катод.


Справа показано таблицю відповідності висновків Arduino та висновків світлодіодного індикатора.

Код цього проекту:

byte numbers = (
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
void setup() (
for(int i = 2; i pinMode(i, OUTPUT);
}
pinMode(9, INPUT);
}
int counter = 0;
bool go_by_switch = true;
int last_input_value = LOW;
void loop() (
if(go_by_switch) (
int switch_input_value = digitalRead(9);
if(last_input_value == LOW && switch_input_value == HIGH) (

}
last_input_value = switch_input_value;
) else (
delay(500);
counter = (counter + 1) % 10;
}
writeNumber(counter);
}

Void writeNumber(int number) (
if(number 9) (
return;
}
byte mask = numbers;
byte currentPinMask = B10000000;
for(int i = 2; i if(mask & currentPinMask) digitalWrite(i,HIGH);
else digitalWrite(i,LOW);
currentPinMask = currentPinMask >> 1;
}
}

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

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

Що являє собою Arduino?

Як коротко можна охарактеризувати Arduino? Оптимальними словами будуть такі: Arduino є інструментом, за допомогою якого можна створювати різні електронні пристрої. По суті це справжня апаратна обчислювальна платформа універсального призначення. Вона може використовуватися як для побудови простих схем, і реалізації досить складних проектів.

Базується конструктор на своїй апаратній частині, яка є платою введення-виведення. Для програмування плати використовуються мови, які ґрунтуються на C/C++. Вони отримали назву відповідно Processing/Wiring. Від групи С вони успадкували граничну простоту, завдяки чому вони освоюються дуже швидко будь-якою людиною, і застосовувати знання на практиці не є досить значною проблемою. Щоб ви розуміли легкість роботи, часто кажуть, що Arduino - для чарівників-конструкторів-початківців. Розібратися із платами "Ардуїно" можуть навіть діти.

Що на ньому можна зібрати?

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

Де придбати складові?

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

Складові можуть купуватися або у складі комплектів, або окремо. Існують навіть вже заздалегідь підготовлені набори, щоби зібрати машинки, вертольоти з різними типами керування або кораблі. Набір, як на фотографії вгорі, проведений у Китаї, коштуватиме 49 доларів.

Детальніше про апаратуру

Плата Ардуїно є простим мікроконтролером AVR, який був прошитий бутлоадером і має мінімально необхідний мінімум USB-UART порт. Є ще важливі складові, але в межах статті краще зупинитись тільки на цих двох складових.

Спочатку про мікроконтролер, механізм, побудований на одній схемі, в якій і розміщується розроблена програма. На програму можуть впливати натискання кнопок, отримання сигналів від складових творіння (резисторів, транзисторів, датчиків і т.д.) і т.д. і т. д. Як пристрої індикації може вестися використання простих деталей, від світлодіодів і пищалок до складних пристроїв, на зразок графічних дисплеїв. Як розглядаються моторчики, клапани, реле, сервомашинки, електромагніти та безліч інших, яких перераховувати дуже і дуже довго. З чимось із цих списків МК працює прямо, за допомогою з'єднувальних проводів. Для деяких механізмів потрібні перехідні пристрої. Але якщо ви почнете конструювати, відірватися вам буде складно. Тепер поговоримо про програмування Arduino.

Докладніше про процес програмування плати

Вже готову для роботи на мікроконтролері програму називають прошивкою. Можливо, як один проект, так і проекти Arduino, тому кожну прошивку бажано було б зберігати в окремій папці, щоб прискорити процес знаходження потрібних файлів. Вона прошивається на кристал МК у вигляді спеціалізованих пристроїв: програматорів. І тут "Ардуїно" має одну перевагу - йому не потрібний програматор. Все зроблено так, щоб програмування Arduino для початківців не складало труднощів. Написаний код можна завантажити до МК за допомогою USB-шнура. Досягається цієї переваги не якимось вбудованим вже заздалегідь програматором, а спецпрошивкою - бутлоадером. Бутлоадер є спеціальною програмою, яка запускається відразу після підключення і слухає, чи будуть якісь команди, чи прошиватимуть кристал, чи є проекти Arduino чи ні. З використання бутлоадера випливає кілька дуже привабливих плюсів:

  1. Використання лише одного каналу зв'язку, що не потребує додаткових витрат за часом. Так, проекти Arduino не вимагають, щоб ви підключали багато різних дротів, і виникала плутанина при їх використанні. Для успішної роботи вистачає одного USB-шнура.
  2. Захист від кривих рук. Довести мікроконтролер до стану цегли за допомогою прямої прошивки досить легко, сильно напружуватися не треба. При роботі з бутлоадером до потенційно небезпечних налаштувань вам не дістатись (за допомогою програми розробки, звичайно, так зламати можна все). Тому Arduino для початківців призначений не тільки з тієї точки зору, що зрозумілий і зручний, він ще дозволить уникнути небажаних грошових витрат, пов'язаних з недосвідченістю людини, яка працює з ними.

Проекти для початку

Коли ви придбали комплект, паяльник, каніфоллю і припоєм, не слід відразу ліпити дуже складні конструкції. Їх, звичайно, зліпити можна, але шанс успіху в Arduino для початківців досить низький за складних проектів. Для тренування та «набивання» руки ви можете спробувати реалізувати кілька простіших задумів, які допоможуть розібратися із взаємодією та роботою "Ардуїно". Як такі перші кроки в роботі з Arduino для початківців можна порадити розглянути:

  1. Створити який працюватиме завдяки "Ардуїно".
  2. Підключення окремої кнопки до "Ардуїно". При цьому можна зробити так, щоб кнопка могла регулювати світлодіод з пункту №1.
  3. Підключення потенціометра.
  4. Управління сервоприводом.
  5. Підключення та робота з триколірним світлодіодом.
  6. Підключення п'єзоелемента.
  7. Підключення фоторезистора.
  8. Підключення датчика руху та сигнали про його роботу.
  9. Підключення датчика вологості чи температури.

Проекти для майбутнього

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

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

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

  1. Досить простий у використанні інтерфейс. Зрозуміло, де який контакт, і до чого прикріплювати з'єднувальні дроти.
  2. Чіп на платі підключається безпосередньо до USB-порту. Перевага цієї установки полягає в тому, що послідовний зв'язок – дуже простий протокол, який перевірений часом, а USB робить з'єднання з сучасними комп'ютерами дуже зручним.
  3. Легко знайти центральну частину мікроконтролера, яка є чіп ATmega328. Він має більше апаратних функцій, таких як таймери, зовнішні та внутрішні переривання, піни PWM та кілька режимів очікування.
  4. Пристрій з відкритим вихідним кодом, тому велика кількість радіоаматорів можуть виправити баги та неполадки програмне забезпечення. Це полегшує налагодження проектів.
  5. Тактова частота дорівнює 16 МГц, що досить швидко більшість додатків і прискорює роботу микроконтроллера.
  6. Дуже зручно керувати потужністю всередині нього, і вона має функцію вбудованого регулювання напруги. Також мікроконтролер можна відключити від порту USB без зовнішнього джерела живлення. Можна підключити зовнішнє джерело живлення до 12 В. Причому мікропроцесор сам визначить необхідну напругу.
  7. Наявність 13 цифрових контактів та 6 аналогових контактів. Ці піни дозволяють підключати обладнання до плати Arduino uno зі стороннього носія. Контакти використовуються як ключ для розширення обчислювальної здатності Arduino uno у реальному світі. Просто підключіть електронні пристрої та датчики до роз'ємів, які відповідають кожному з цих контактів.
  8. Є роз'єм ICSP для обходу USB-порту і сполучення з Arduino безпосередньо в якості послідовного пристрою. Цей порт необхідний, щоб перезавантажити чіп, якщо він пошкоджений і не може використовуватися на вашому комп'ютері.
  9. Наявність 32 КБ флеш-пам'яті для зберігання коду розробника.
  10. Світлодіод на платі підключається до цифрового контакту 13 для швидкого налагодження коду та спрощення цього процесу.
  11. Нарешті, він має кнопка для скидання програми на чіпі.

Arduino був створений у 2005 році двома італійськими інженерами – Девідом Куартіллесом та Массімо Банзі з метою, щоб учні навчилися програмувати мікроконтролер Arduino uno та покращити свої навички в галузі електроніки та використовувати їх у реальному світі.

Arduino uno може сприймати навколишнє середовище, Отримуючи вхід від різних датчиків, і здатний впливати на навколишнє середовище та інші виконавчі механізми. Мікроконтролер запрограмований з використанням мови програмування Arduino (на основі проводки) та середовища розробки Arduino (на основі обробки).

Тепер переходимо безпосередньо до проектів на Arduino uno.

Найпростіший проект для початківців

Розглянемо кілька простих та цікавих проектів Ардуїно uno, які під силу зробити навіть новачкам у цій справі – система сигналізації.

Ми вже робили урок щодо цього проекту - . Коротко про те, що робиться і як.

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

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

Для цього проекту вам знадобляться:

  1. Ультразвуковий датчик пінг - HC-SR04.
  2. П'єзо-зумер.
  3. Світлодіодна стрічка.
  4. Автомобільне освітлення за допомогою стрічки RGB. У цьому посібнику Arduino ви дізнаєтеся, як зробити внутрішнє освітлення автомобіля RGB, використовуючи плату Arduino uno.

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

Ви можете змінити колір освітлення за допомогою пристрої Android(телефон або планшет) за допомогою програми « Bluetooth RGB Controller» (Dev Next Prototypes), яке ви можете безкоштовно завантажити з Android Play Store. Також ви можете знайти схему електронної EasyEDA або замовити свою власну схему на основі Arduino на друкованій платі.

Дивовижні проекти на Ардуїно Уно

Більшість професіоналів у сфері розробки електронних проектів на Arduino uno люблять експериментувати. Внаслідок цього з'являються цікаві та дивовижні пристрої, які розглянуті нижче:

  1. Додавання ІЧ-пульта в акустичну систему. У побутовій електроніці пульт дистанційного керуванняє компонентом електронного пристрою, такого як телевізор, DVD-плеєр або інший побутовий прилад, який використовується для бездротового керування пристроєм з короткої відстані. Пульт дистанційного керування в першу чергу зручний для людини і дозволяє працювати з пристроями, які не підходять для безпосередньої роботи елементів керування.
  2. Будильник. Годинник реального часу використовується для отримання точного часу. Тут ця система відображає дату та час на РК-екрані, і ми можемо встановити будильник за допомогою кнопок управління. Як тільки час сигналу тривоги настане, система подає звуковий сигнал.
  3. Кроковий двигун. означає точний двигун, який можна повертати на один крок за один раз. Такий пристрій роблять за допомогою робототехніки, 3D-принтерів та верстатів з ЧПУ.

    Для цього проекту візьміть найдешевший кроковий двигун, який ви можете знайти. Двигуни доступні онлайн. У цьому проекті використовується крокомір 28byj-48, який підходить для більшості інших подібних проектів. Його легко підключити до плати Arduino.
    - Вам знадобляться 6 кабелів із роз'ємами типу «жінка-чоловік». Вам просто потрібно підключити двигун до плати і все! Ви також можете додати невелику частину стрічки на головку, що обертається, щоб побачити, що вона виробляє обертальні рухи.

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

Коли ви закінчите роботу, на екрані з'явиться результат ваших дій. Щоб все було просто і зрозуміло, рекомендується використовувати РК-дисплей з конвертером I2C, тому вам потрібно лише 4 кабелі для підключення до плати Arduino.

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

«- З чого починати, Ваша Величність? – спитав він. - Почни з початку, - поважно відповів Король, ... »(C) Льюїс Керрол Аліса в країні чудес

Крок 1: Починаємо з самого початку або як було б добре, якби Ардуїно була безкоштовною

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

Купивши контролер, ми розуміємо, що плата у нас одна, а задумів багато. Що ж робити? Мозгомисльприводить нас до правильного рішення.

Потрібно клонувати Ардуїно своїми руками!

Крок 2: Збираємо все потрібне

Для прискорення процесу скористаємося макетною платою. Як відомо з технічних параметрів контролера ATmega 328 IC, Для його запуску в мінімальній конфігурації нам знадобляться:

− контролер Arduino Duemilanove(буде використаний як програматор);
− мікросхема ATmega 328 IC ;
− кварцовий резонатор на 16 МГц;
− резистори 100 Ом 3 шт.;
− конденсатори 22pF 2 шт.;
− світлодіоди 3 шт з червоним, зеленим, .і жовтим кольором свічення;
− стабілізатор напруги на 5 Вольт наприклад 7805;
− будь-яка 9 батарея з роз'ємом для підключення;
− кабель USB;
− комп'ютер або ноутбук із встановленим пакетом програм Arduino IDE;
− макетна плата та дроти.

Крок 3: Починаємо макетувати



Розміщуємо на макетній платі мікросхему контролера.

Крок 4: Монтуємо стабілізатор напруги та ланцюга живлення

Встановлюємо на плату стабілізатор напруги L7805. Призначення висновків мікросхеми 1-вхід (7-20 Вольт), 2-корпус, 3-вихід (5 Вольт). За допомогою монтажних проводів підключаємо стабілізатор до джерела живлення та контролера, як показано на фотографіях.

Крок 5: Підключаємо живлення до контролера

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

Порада: Монтажні дроти мають різний колір ізоляції, намагайтеся використовувати дроти одного кольору для кожного ланцюга.

Крок 6: Підключаємо кварцовий резонатор



Маємо на платі резонатор і конденсатори коливального контуру.

Порядок монтажу наступний:

− конденсатор 22pF ставимо між землею та 9 ніжкою контролера;
− конденсатор 22pF ставимо між землею та 10 ніжкою контролера;
− резонатор включаємо між ногами 9 та 10 контролера;
− резистор 10 kOm включаємо між 1 ногою контролера та +5В (шунтуємо сигнал «Скидання»).

Крок 7: Додаємо індикатори стану контролера

Світлодіоди включаємо послідовно з резисторами 100 Ом, між землею та нашим програматором.

Крок 7: З'єднуємо макет із платою програматора


Підключаємо зібраний макет до плати Arduino Duemilanoveнаступним чином:

− виведення жовтого світлодіода з'єднуємо з 9 виведенням на роз'єм програматора, його пульсація покаже нам, що програматор працює;
− виведення червоного світлодіода з'єднуємо з 8 виведенням на роз'ємі програматора, він сигналізує про можливі помилки;
− виведення зеленого світлодіода з'єднуємо з 7 виведенням на роз'єм програматора, його світіння сигналізує про обмін даними між програматором і мікроконтролером.

З'єднуємо наші плати між собою іншими проводами як показано на малюнку, не забувши з'єднати дроти живлення + 5 Ві корпусміж ними.

Крок 8: Перетворюємо плату Arduino Duemilanove на програматор

Для того, щоб завантажити в мікроконтролер ATmega 328ICбутлоадер необхідно перетворити наш Arduino Duemilanoveу програматор. Підключаємо нашу збірку до комп'ютера за допомогою USBкабелю. Відкриваємо середовище програмування AndurinoIDE, вибираємо у ньому скетч (програму) AndurinoISPі завантажуємо його в Arduino Duemilanove. По миготінню жовтого світлодіода переконуємось, що скетч завантажився у наш програматор.

Крок 9: Завантажуємо бутлоадер

В AndurinoISP (пункт меню « Tools») вибираємо потрібний нам тип контролера ( ATmega 328 IC). Даємо команду на завантаження бутлоадера "Burn bootloader". Слідкуємо за повідомленнями AndurinoIDE, після закінчення завантаження бутлоадера Done Burning bootloader»наш мікроконтролер готовий до запису скетчу проекту нашої нової саморобки.

Крок 10: Можливі проблеми та їх вирішення






Можливі помилки під час запису бутлоадера та способи їх усунення наведені на скріншотах відладчика вище.

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


Top