Прості схеми Arduino для початківців. Прості схеми на Arduino для початківців Конструкції на ардуїно

Затримки в Ардуїно грають дуже велику роль. Без них не зможе працювати навіть найпростіший приклад Blink, який блимає світлодіодом через заданий проміжок часу. Але більшість програмістів-початківців мало знають про тимчасові затримки і використовують тільки Arduino delay, не знаючи побічних ефектів цієї команди. У цій статті я докладно розповім про тимчасові функції та особливості їх використання в середовищі розробки Arduino IDE.

В Arduino існує кілька різних команд, які відповідають за роботу з часом та паузи:

  • delay()
  • delayMicroseconds()
  • millis()
  • micros()

Вони відрізняються точності і мають свої особливості, які варто враховувати при написанні коду.

Використання функції arduino delay

Синтаксис

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

Void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); // подаємо високий сигнал на 13 пін delay(10000); // пауза 10000мс або 10 секунд digitalWrite13, LOW); // подаємо низький сигнал на 13 пін delay (10000); // пауза 10000мс або 10 секунд)

У методі setupпрописуємо, що пін 13 буде використовуватися як вихід. В основній частині програми спочатку на пін подається високий сигнал, потім затримку в 10 секунд. На цей час програма ніби зупиняється. Далі подається низький сигнал і знову затримка, і все починається спочатку. У результаті ми отримуємо, що на пін по черзі подається, то 5, то 0.

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

Приклад delay з блиманням світлодіодом

Приклад схеми для ілюстрації роботи функції delay.
Можна побудувати схему зі світлодіодом та резистором. Тоді в нас вийде стандартний приклад – блимання світлодіодом. Для цього на пін, який ми позначили як вихідний, необхідно підключити світлодіод до плюсового контакту. Вільну ногу світлодіода через резистор приблизно на 220 Ом (можна трохи більше), підключаємо на землю. Визначити полярність можна, якщо подивитися на його нутрощі. Велика філіжанка всередині з'єднана з мінусом, а маленька ніжка з плюсом. Якщо світлодіод новий, то визначити полярність можна по довжині висновків: довга ніжка - плюс, коротка - мінус.

Функція delayMicroseconds

Ця функція є повним аналогом delay за винятком того, що одиниці виміру у неї не мілісекунди, а мікросекунди (в 1 секунді – 1000000 мікросекунд). Максимальне значення буде 16383, що дорівнює 16 мілісекунд. Роздільна здатність дорівнює 4, тобто число буде завжди кратно чотирьом. Шматок прикладу виглядатиме так:

DigitalWrite(2, HIGH); // подаємо високий сигнал на 2 пін delayMicroseconds(16383); // пауза 16383мкс digitalWrite(2, LOW); // подаємо низький сигнал на 2 пін delayMicroseconds(16383); // Пауза 16383мкс

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

Функція millis замість delay

Функція millis() дозволить виконати затримку без delay на ардуїно, тим самим оминути недоліки попередніх способів. Максимальне значення параметра millis таке саме, як і у функції delay (4294967295мс або 50 діб).

За допомогою millis ми не зупиняємо виконання всього скетчу, а просто вказуємо, скільки часу ардуїно має просто "минати" саме той блок коду, який ми хочемо призупинити. На відміну від delay millis, сама по собі нічого не зупиняє. Ця команда просто повертає нам від вбудованого таймера мікроконтролера кількість мілісекунд, що пройшли з моменту запуску. При кожному виклику loop Ми самі вимірюємо час, що минув з останнього виклику нашого коду і якщо різниця часу менша за бажану паузу, то ігноруємо код. Як тільки різниця стане більшою за потрібну паузу, ми виконуємо код, отримуємо поточний час за допомогою тієї ж millis і запам'ятовуємо його – цей час буде новою точкою відліку. У наступному циклі відлік вже буде від нової точки і ми знову ігноруватимемо код, поки нова різниця millis і нашого збереженого раніше значення не досягне знову бажаної паузи.

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

Ось приклад, який наочно ілюструє роботу команди:

Unsigned long timing; // Змінна для зберігання точки відліку void setup() ( Serial.begin(9600); ) void loop() ( /* У цьому місці починається виконання аналога delay() Обчислюємо різницю між поточним моментом і раніше збереженою точкою відліку. Якщо різниця більша потрібного значення, то виконуємо код Якщо ні - нічого не робимо */ if (millis() - timing > 10000)( // Замість 10000 підставте потрібне вам значення паузи timing = millis(); Serial.println ("10 seconds") ; ) )

Спочатку ми вводимо змінну timing, в ній зберігатиметься кількість мілісекунд. За замовчуванням значення змінної дорівнює 0. В основній частині програми перевіряємо умову: якщо кількість мілісекунд із запуску мікроконтролера мінус число, записане в змінну timing більше, ніж 10000, виконується дія з виведення повідомлення в монітор порту і в змінну записується поточне значення часу. В результаті роботи програми кожні 10 секунд монітор порту буде виводитися напис 10 seconds. Цей спосіб дозволяє моргати світлодіодом без delay.

Функція micros замість delay

Ця функція може виконати затримку, не використовуючи команду delay. Вона працює так само, як і millis, але вважає не мілісекунди, а мікросекунди з роздільною здатністю в 4мкс. Її максимальне значення 4294967295 мікросекунд або 70 хвилин. При переповненні значення просто скидається в 0, не забувайте про це.

Резюме

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

» представляє навчальний курс «Arduino для початківців». Серія представлена ​​10 уроками та додатковим матеріалом. Уроки включають текстові інструкції, фотографії та навчальні відео. У кожному уроці ви знайдете список необхідних компонентів, листинг програми та схему підключення. Вивчивши ці 10 базових уроків, ви зможете приступити до більш цікавих моделей та збирання роботів на основі Arduino. Курс орієнтований на новачків, щоб до нього приступити, не потрібні додаткові відомості з електротехніки або робототехніки.

Коротка інформація про Arduino

Що таке Arduino?

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

Як пов'язані Arduino та роботи?

Відповідь дуже проста — Arduino часто використовується як мозок робота.

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

Урок 1. Миготливий світлодіод на Arduino

На першому уроці ви навчитеся підключати світлодіод Arduino і керувати його блимати. Це найпростіша та базова модель.

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

Урок 2. Підключення кнопки на Arduino

На цьому уроці ви навчитеся підключати кнопку та світлодіод до Arduino.

При натиснутій кнопці світлодіод горітиме, при віджатій – не горітиме. Це також базова модель.

Урок 3. Підключення потенціометра на Arduino

У цьому уроці ви навчитеся підключати потенціометр Arduino.

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

Урок 4. Управління сервоприводом на Arduino

На цьому уроці ви навчитеся підключати сервопривід Arduino.

Сервопривід- Це мотор, положенням валу якого можна керувати, задаючи кут повороту.

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

Урок 5. Триколірний світлодіод на Arduino

На цьому уроці ви навчитеся підключати триколірний світлодіод Arduino.

Триколірний світлодіод(rgb led) — це три світлодіоди різних кольорів в одному корпусі. Вони бувають як із невеликою друкованою платою, на якій розташовані резистори, так і без вбудованих резисторів. В уроці розглянуто обидва варіанти.

Урок 6. П'єзоелемент на Arduino

На цьому уроці ви навчитеся підключати п'єзоелемент Arduino.

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

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

Урок 7. Фоторезистор на Arduino

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

Фоторезистор- Резистор, опір якого залежить від яскравості світла, що падає на нього.

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

Урок 8. Датчик руху (PIR) Arduino. Автоматичне відправлення E-mail

На цьому уроці нашого курсу ви навчитеся підключати датчик руху (PIR) до Arduino, а також організовувати автоматичне надсилання e-mail.

Датчик руху (PIR)- Інфрачервоний датчик для виявлення руху чи присутності людей чи тварин.

У нашій моделі при отриманні з PIR-датчика сигналу про рух людини Arduino посилає комп'ютеру команду надіслати електронну пошту і надсилання листа відбувається автоматично.

Урок 9. Підключення датчика температури та вологості DHT11 або DHT22

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

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

У нашій моделі Arduino зчитує показання датчика та здійснюється виведення показань на екран комп'ютера.

Урок 10. Підключення матричної клавіатури

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

Матрична клавіатурапридумана, щоб спростити підключення великої кількості кнопок. Такі пристрої зустрічаються скрізь – у клавіатурах комп'ютерів, калькуляторах тощо.

Урок 11. Підключення модуля годинника реального часу DS3231

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

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

Додаток. Готові каркаси та роботи Arduino


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

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

Ще один варіант - купівля каркаса або корпусу робота: платформи на коліщатках або гусениці, гуманоїда, павука тощо. І тут начинку робота доведеться робити самостійно.

Додаток. Мобільний довідник


- Помічник для розробників алгоритмів під платформу Arduino, мета якого дати кінцевому користувачеві можливість мати мобільний набір команд (довідник).

Додаток складається з 3-х основних розділів:

  • Оператори;
  • Дані;
  • Опції.

Де придбати Arduino


Набори Arduino

Курс поповнюватиметься додатковими уроками. Підпишіться на нас

Сьогодні мова піде про використання SD та micro SD карт в Arduino. Ми розберемося як можна підключити SD карти до Ардуїно, як записувати та зчитувати інформацію. Використання додаткової пам'яті може бути дуже корисним у багатьох проектах. Якщо ви не знаєте, що таке SPI, I2C та аналогові висновки, то раджу вам подивитися минулі уроки і розібратися з цими інтерфейсами зв'язку Ардуїно.

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

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

У цьому уроці ми говоритимемо про Serial інтерфейс зв'язку Arduino. Ми вже використовували цей інтерфейс у минулих уроках, коли виводили значення датчиків на екран комп'ютера. Сьогодні ми докладніше розберемо як працює це з'єднання, а так само ми дізнаємося як можна використовувати дані, передані в монітор порту комп'ютера, використовуючи Processing.

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

У цьому уроці ми поговоримо про основи схемотехніки стосовно 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 - ) (

Цей симулятор найкраще працює у браузері Chrome
Давайте розглянемо Arduino уважніше.

Arduino це не великий комп'ютер, до якого можуть підключатися зовнішні ланцюги. В Arduino Uno використовується Atmega 328P
Це найбільший чіп на платі. Цей чіп виконує програми, які зберігаються у його пам'яті. Ви можете завантажити програму через USB за допомогою Arduino IDE. Usb порт також забезпечує харчування arduino.

Є окремий роз'єм живлення. На платі є два висновки позначені 5v та 3.3v, які потрібні для того, щоб запитувати різні пристрої. Також ви знайдете контакти, помічені як GND, це висновки землі (земля це 0В). Платформа Arduino, також, має 14 цифрових висновків (пінів), помічених цифрами від 0 до 13, які підключаються до зовнішніх вузлів і мають високі або низькі стани (включено або вимкнено). Ці контакти можуть працювати як виходи чи як входи, тобто. вони можуть або передавати якісь дані та керувати зовнішніми пристроями, або отримувати дані з пристроїв. Наступні висновки на платі позначені А0-А5. Це аналогові входи, які можуть приймати дані різних датчиків. Це особливо зручно, коли вам треба виміряти певний діапазон, наприклад, температуру. У аналогових входів є додаткові функції, які можна використовувати окремо.

Як використати макетну плату.

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

У макетній платі є ряди отворів, в які ви можете вставляти деталі та дроти. Деякі з цих отворів електрично з'єднані один з одним.

Два верхніх і нижніх ряди з'єднані по - рядно вздовж усієї плати. Ці ряди використовують, щоб подавати харчування на схему. Це може бути 5в або 3.3в, але в будь-якому випадку, перше, що вам потрібно зробити, - це підключити 5в і GND на макетну плату, як показано на малюнку. Іноді ці з'єднання рядів можуть перериватися посередині плати, тоді, якщо вам знадобиться, ви можете з'єднати їх, як показано на малюнку.








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


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

Навіщо потрібен резистор у схемі? У разі він обмежує струм, який проходить через світлодіод. Кожен світлодіод розрахований на певний струм, і якщо цей струм буде більшим, то світлодіод вийде з ладу. Дізнатися, якого номіналу має бути резистор можна за допомогою закону ома. Для тих хто не знає чи забув, закон каже, що існує лінійна залежність струму від напруги. Тобто чим більше ми докладемо напруги до резистора, тим більше через нього струме струм.
V=I*R
Де V-напруга на резистор
I- Струм через резистор
R- Опір, який треба знайти.
По-перше, ми повинні пізнати напругу на резистор. Більшість світлодіодів 3мм або 5мм, які ви використовуватимете, мають робочу напругу 3в. Значить, на резистори нам треба погасити 5-3 = 2в.

Потім ми обчислимо струм через резистор.
Більшість 3 та 5мм світлодіодів світяться повною яскравістю при струмі 20мА. Струм більше цього може вивести їх з ладу, а струм меншої сили знизить їхню яскравість, не завдавши жодної шкоди.

Отже, хочемо включити світлодіод у ланцюг 5в,щоб у ньому був струм 20мА. Так як всі деталі включені в один ланцюг на резистор теж буде 20мА струм.
Ми отримуємо
2В = 20 мА * R
2В = 0.02A * R
R = 100 Ом

100 Ом це мінімальний опір, краще використовувати трохи більше, тому що світлодіоди мають деякий розкид характеристик.
У цьому прикладі використовується резистор 220 Ом. Тільки тому, що у автора їх дуже багато: wink: .

Вставте світлодіод у отвори посередині плати таким чином, щоб його довгий висновок був з'єднаний з одним із висновків резистора. Другий кінець резистора з'єднайте з 5V, а другий вихід світлодіода з'єднайте з GND. Світлодіод повинен спалахнути.

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

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

Анатомія Arduino Sketch.

Програми Arduino називають sketch. Вони складаються із двох основних функцій. Функція setupта функція loop
всередині цієї функції ви задаватимете всі основні налаштування. Які висновки працюватимуть на вхід чи вихід, які бібліотеки підключатимуть, ініціалізуватимуть змінні. Функція Setup()запускається лише один раз протягом скетчу, коли стартує виконання програми.
це основна функція, яка виконується після setup(). Фактично, це сама програма. Ця функція буде виконуватися нескінченно, доки ви не вимкнете живлення.

Arduino блимає світлодіодом



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

Ця функція використовується в setup()частини програми і служить для ініціалізації висновків, які ви будете використовувати як вхід (INPUT)або вихід (OUTPUT). Ви не зможете рахувати або записати дані з піна, доки не встановите його відповідно до pinMode. Ця функція має два аргументи: pinNumber- це номер піна, який ви використовуватимете.

Mode-Задає, як пін працюватиме. На вхід (INPUT)або вихід (OUTPUT). Щоб запалити світлодіод, ми повинні подати сигнал. З Arduino. Для цього ми налаштовуємо пін на вихід.
- ця функція служить у тому, щоб задати стан (state)піна (pinNumber). Є два основні стани (взагалі їх 3), один це HIGH, на піні буде 5в, інше це Lowта на піні буде 0в. Значить, щоби запалити світлодіод нам треба на піні, сполученому зі світлодіодом виставити високий рівень HIGH.

Затримка. Служить для затримки програми на заданий в мсек період.
Нижче наведено код, який змушує блимати світлодіод.
//LED Blink int ledPin = 7;//пін Arduino до якого підключений світлодіод void setup() ( pinMode(ledPin, OUTPUT);// установка піна як ВИХІД ) запалити світлодіод delay (1000); // затримка 1000 мсек (1 сек) digitalWrite (ledPin, LOW); // Вимкнути світлодіод delay (1000);

Невеликі пояснення щодо коду.
Рядки, які починаються з "//", це коментарі Arduino їх ігнорує.
Усі команди закінчуються крапкою з комою, якщо ви забудете їх, то отримаєте повідомлення про помилку.

ledPin- Це змінна. Змінні використовуються у програмах зберігання значень. У цьому прикладі змінної ledPinнадається значення 7, це номер піна Arduino. Коли Arduino у програмі зустріне рядок зі змінною ledPin, він буде використовувати те значення, яке ми вказали раніше.
Так запис pinMode(ledPin, OUTPUT)аналогічна запису pinMode(7, OUTPUT).
Але в першому випадку вам достатньо змінити змінну і вона зміниться в кожному рядку, де використовується, а в другому вам, щоб змінити змінну, доведеться ручками в кожній команді вносити зміни.

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

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

Управління кількома світлодіодами.

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

Для того, щоб вмикати та вимикати світлодіоди по черзі треба написати програму подібну до цієї:
//Multi LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() ( //установка пінів як ВИХІД pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) void loop() ( digitalWrite(led1Pin) );//запалити світлодіод delay(1000);//затримка 1 сек digitalWrite(led1Pin, LOW);//загасити світлодіод delay(1000);//затримка 1 сек //do the same for the other 3 LEDs digitalWrite(led2Pin ; HIGH); delay(1000);// затримка 1 сек digitalWrite(led3Pin, LOW);//згасити світлодіод delay(1000);//затримка 1 сек digitalWrite(led4Pin, HIGH); 1 сек digitalWrite(led4Pin, LOW);//згасити світлодіод delay(1000);//затримка 1 сек )

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

DigitalWrite (led4Pin, HIGH); delay (1000); digitalWrite (led4Pin, LOW); delay (1000);
повний код скетчу у вкладенні (завантажень: 1260)

Регулювання яскравості світлодіодів

Іноді вам потрібно буде змінювати яскравість світлодіодів у програмі. Це можна зробити за допомогою команди analogWrite() . Ця команда так швидко вмикає та вимикає світлодіод, що очей не бачить це мерехтіння. Якщо світлодіод половину часу буде увімкнений, а половину вимкнений, то візуально здаватиметься, що він світиться в половину своєї яскравості. Це називається широтно-імпульсна модуляція (ШІМ або PWM англійською). Шим застосовується досить часто, тому що за її допомогою можна керувати "аналоговим" компонентом за допомогою цифрового коду. Не всі висновки Arduino підходять для цього. Тільки ті висновки, біля яких намальовано таке позначення. ~ Ви побачите його поряд з висновками 3,5,6,9,10,11.
Поєднайте один із ваших світлодіодів з одним із висновків ШІМ(у автора це висновок 9). Тепер запуститискетч миготіння світлодіода, але перш за змініть команду digitalWrite()на analogWrite(). analogWrite()має два аргументи: перший це номер виведення, а другий- значення ШІМ (0-255), стосовно світлодіодів це буде їх яскравість свічення, а для електродвигунів швидкість обертання. Нижче наведено код прикладу для різної яскравості світлодіода.
//Змінюємо яскравість світлодіода int ledPin = 9;//до цього висновку приєднаний світлодіод void setup() ( pinMode(ledPin, OUTPUT); повна яскравість (255/255 = 1) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//вимкнути світлодіод delay(1000); на 3/4 (191/255 ~= 0.75) delay(1000);//пауза 1 сек digitalWrite(ledPin, LOW);//вимкнути світлодіод delay(1000);//пауза 1 сек analogWrite(ledPin, 127); //половина яскравості (127/255 ~= 0.5) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//вимкнути світлодіод delay(1000);//пауза 1 сек analogWrite(ledPin, 63) //чверть яскравості (63/255 ~= 0.25) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//вимкнути світлодіод delay(1000);//пауза 1 сек )

Спробуйте змінити значення ШІМ у команді analogWrite()щоб побачити, як це впливає на яскравість.
Далі ви дізнаєтеся, як регулювати яскравість плавно від повної до нульової. Можна, звичайно, скопіювати шматок коду 255 разів
analogWrite(ledPin, brightness); delay(5);//short delay brightness = brightness + 1;
Але самі розумієте - це буде не практично. Для цього краще використовувати цикл FOR, який використовували раніше.
У наступному прикладі використовуються два цикли, один для зменшення яскравості від 255 до 0
for (int brightness=0;brightness=0;brightness--)( analogWrite(ledPin,brightness); delay(5); )
delay(5)використовується, щоб уповільнити швидкість наростання та зменшення яскравості 5*256=1280 мсек= 1.28 сек.)
У першому рядку використовується " brightness-" ,щоб значення яскравості зменшувалася на 1, щоразу, коли цикл повторюється. Зверніть увагу, що цикл працюватиме до того часу, поки brightness >=0. Замінивши знак > на знак >= ми включили 0 у діапазон яскравості. Нижче змодельовано цей скетч. //плавно змінюємо яскравість int ledPin = 9;//до цього піну підключений світлодіод void setup() ( pinMode(ledPin, OUTPUT);// ініціалізація піна на вихід ) void loop() ( //плавно збільшуємо яскравість (0 to 255 ) for (int brightness=0;brightness=0;brightness--)( analogWrite(ledPin,brightness); delay(5); ) delay(1000);//ждем 1 сек //плавно зменшуємо яскравість (255 to 0) for (int brightness=255;brightness>=0;brightness--)( analogWrite(ledPin,brightness); delay(5); ) delay(1000);//чекаємо 1 сек ) )
Це не дуже добре, але ідея зрозуміла.

RGB-світлодіод та Arduino

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

Включно з різними світлодіодами з різною яскравістю можна комбінувати і отримувати різні кольори. Для Arduino, де кількість градацій яскравості дорівнює 256, ви отримаєте 256^3=16581375 можливих кольорів. Реально їх, звісно, ​​буде менше.
Світлодіод, який ми будемо використовувати загальним катодом. Тобто. всі три світлодіоди конструктивно з'єднані катодами одного висновку. Цей висновок ми приєднаємо до висновку GND. Інші висновки, через обмежувальні резистори, треба приєднати до висновків ШІМ. Автор використовував висновки 9-11. Таким чином можна буде керувати кожним світлодіодом окремо. У першому скетчі показано, як увімкнути кожен світлодіод окремо.



//RGB LED - test //pin connections int red = 9; int green = 10; int blue = 11; void setup()( pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); ) void loop()( //включення/вимкнення червоного світлодіод digitalWrite(red, HIGH); delay(500) digitalWrite(red, LOW);delay(500);// увімкнення/вимкнення зеленого світлодіоду digitalWrite(green, HIGH);delay(500); світлодіода digitalWrite(blue, HIGH);delay(500);digitalWrite(blue, LOW);delay(500);

У наступному прикладі використовуються команди analogWrite()і , щоб отримати різні випадкові значення яскравості для світлодіодів. Ви побачите різні кольори, що змінюються випадковим чином.
//RGB LED - random colors //pin connections int red = 9; int green = 10; int blue = 11; void setup()( pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); ) void loop()( //pick random color analogWrite(red, random(256)); analogWrite( blue, random(256));analogWrite(green, random(256));delay(1000);//wait one second )

Random(256)-Повертає випадкове число в діапазоні від 0 до 255.
У прикріпленому файлі скетч, який продемонструє плавні переходи кольорів від червоного до зеленого, потім до синього, червоного, зеленого тощо. (завантажень: 348)
Приклад скетчу працює, але є багато коду, що повторюється. Можна спростити код, написавши власну допоміжну функцію, яка плавно змінюватиме один колір на інший.
Ось як вона виглядатиме: (скачувань: 385)
Давайте розглянемо визначення функції частинами. Функція називається faderі має два аргументи. Кожен аргумент відокремлюється комою і має тип оголошений у першому рядку визначення функції: void fader (int color1, int color2). Ви бачите, що обидва аргументи оголошені як int, і їм присвоєно імена color1і color2як умовні змінні для визначення функції. Voidозначає, що функція не повертає жодних значень, вона просто виконує команди. Якщо треба було б написати функцію, яка повертала результат множення, це виглядало б так:
int multiplier(int number1, int number2)( int product = number1*number2; return product; )
Зверніть увагу, як ми оголосили Тип intяк тип значення, що повертається замість
void.
Усередині функції йдуть команди, які ви вже використовували у попередньому скетчі, лише номери висновків замінили на color1і color2. Викликається функція fader, її аргументи обчислюються як color1 = redі color2 = green. В архіві повний скетч із використанням функцій (скачувань: 288)

Кнопка

У наступному скетчі використовуватиметься кнопка з нормально розімкненими контактами, без фіксації.


Це означає, що поки кнопка не натиснута, струм через неї не йде, а після відпускання кнопка повертається у вихідне положення.
У схемі, крім кнопки, використовується резистор. У разі він обмежує струм, а " підтягує " кнопку до 0в (GND). Тобто. доки кнопка не натиснута на виводі Arduino, до якого вона підключена, буде низький рівень. Резистор, що використовується у схемі 10 кОм.


// Визначаємо натискання кнопки int buttonPin = 7; void setup()( pinMode(buttonPin, INPUT); // ініціалізуємо пін на вхід Serial.begin (9600); // ініціалізуємо послідовний порт) кнопка натиснута Serial.println("pressed"); // виводимо напис "pressed" ) else ( Serial.println("unpressed");// інакше "unpressed" ) )
У цьому скетчі кілька нових команд.
-Ця команда приймає значення High (високий рівень) і low (низький рівень) того висновку, який ми перевіряємо. Попередньо setup() цей висновок треба налаштувати на вхід.
; //де buttonPin це номер виводу, куди приєднується кнопка.
Послідовний порт дозволяє відправляти Arduino повідомлення на комп'ютер, тоді як сам контролер виконує програму. Це корисно для налагодження програми, надсилання повідомлень на інші пристрої або програми. Щоб увімкнути передачу даних через послідовний порт (інша назва UART або USART), треба ініціалізувати його до setup()

Serial.begin()має всього один аргумент-це швидкість передачі між Arduino і комп'ютером.
скетче використовується команда для виведення повідомлення на екран Arduino IDE (Tools >> Serial Monitor).
- конструкція дозволяють контролювати хід виконання програми, поєднавши кілька перевірок в одному місці.
If(якщо) digitalRead повертає значення HIGH, то на моніторі виводиться слово "натиснена". Else (інакше) на моніторі виводиться слово "віджата". Тепер можна спробувати вмикати та вимикати світлодіод за натисканням кнопки.
//button press detection with LED output int buttonPin = 7; int ledPin = 8; void setup()( pinMode(buttonPin, INPUT); =HIGH)( digitalWrite(ledPin,HIGH); Serial.println("pressed"); ) else ( digitalWrite(ledPin,LOW); Serial.println("unpressed"); ) )

Аналоговий вхід

analogReadдозволяє вважати дані з одного з аналогових висновків Arduino та виводить значення в діапазоні від 0 (0В) до 1023 (5В). Якщо напруга на аналоговому вході дорівнюватиме 2.5В, то буде надруковано 2.5/5*1023=512
analogReadмає тільки один аргумент - це номер аналогового входу (А0-А5). У наступному скетчі наводиться код зчитування напруги з потенціометра. Для цього підключіть змінний резистор крайніми висновками на піни 5V і GND, а середній висновок на вхід А0.

Запустіть наступний код і подивіться в serial monitor, як змінюються значення, залежно від повороту ручки резистора.
//analog input int potPin = A0;//до цього піну приєднується центральний висновок потенціометра void setup()( //аналоговий пін за замовчуванням включений на вхід, тому ініціалізація не потрібна Serial.begin(9600); ) void loop()( int potVal = analogRead(potPin);//potVal is a number between 0 and 1023 Serial.println(potVal);
Наступний скетч поєднує скетч натискання кнопки та скетч керування яскравістю світлодіода. Світлодіод буде включатись від кнопки, і керувати яскравістю свічення буде потенціометр.
//button press detection with LED output and variable intensity int buttonPin = 7; int ledPin = 9; int potPin = A0; void setup()( pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop()( if (digitalRead(buttonPin)==HIGH)( // = analogRead(potPin);int scaledVal = map(analogVal, 0, 1023, 0, 255);analogWrite(ledPin, scaledVal); (digitalWrite(ledPin, LOW);

Доставка нових саморобок на пошту

Отримуйте на пошту добірку нових саморобок. Жодного спаму, тільки корисні ідеї!