Якщо ти людина, яка мріє про розробку різноманітних систем з автоматизованим керуванням, накшталт: роботів, розумного дому, інтернету речей, чи ти просто маєш хоббі створювати різні прикольні штуки, які полегшують життя, але ти мало знайомий з цією сферою — купи собі Arduino і погнали!
Як каже Вікіпедія: “Arduino (Ардуіно) — апаратна обчислювальна платформа для аматорського конструювання, основними компонентами якої є плата мікроконтролера з елементами вводу/виводу та середовище розробки Processing/Wiring на мові програмування, що є підмножиною C/C++.”. Людськими словами — це дешева плата яка є у вільному доступі, яка сумісна і з Windows і з Mac та навіть з Linux, до якої можна підключити багато чого, від вирваної кнопки із старої мишки до LED екрану. І все це легко програмується навіть новачком. І це реально так, за власним досвідом скажу, що розібратися у цьому всьому не так вже й важко, я починав ще підлітком, немаючи ніякого досвіду в цьому, тепер же програмування Arduino та загалом програмування для мене є простою справою, де можна розкрити не тільки свої математичні навички, а й весь свій творчий потенціал.
Суть створення Arduino-проектів проста, ви берете одну плату з великої лінійки, підключаєте до її контактів датчик чи якийсь модуль, і пишете, коли на ці контакти потрібно подавати струм чи наоборот перевіряти наявність струму на них. Ось простий приклад. До одного контакту ви підключили датчик світла, а до другого реле з лампою і пишете команди щоб програма перевіряла сигнал з сенсора і за умови його відсутності вмикала реле. Ставим цю систему на подвір’ї, і ось, коли вечоріє у нас вмикаються ліхтарі. І це лише найпростіший приклад, після невеликої практики Ви навчитеся створювати системи, які будуть вмикати освітлення в домі по хлопку або командою “Ok, Google”, які будуть перевіряти чи підлиті квіти та в потрібний момент — підливати їх. Ці плати також вміють керувати двигунами, а отже можна створювати автономні машинки, роботів, балансуючих на двох колесах, приводи для електроштор та 3D принтери.
Для початку роботи потрібно розжитися одною з плат, вона може бути як оригінальною, так і аналогом, так і китайською копією або ж взагалі власноруч спаяною. У мене уже друга китайська копія, перша була UNO, а зараз MEGA і проблем у роботі ні з першою, ні з другою не було, а ціна в рази менша. Також потрібне буде програмне забезпечення, воно є на офіційному сайті у вільному доступі і з усіма вище перерахованими платами справно працює. Модулями та сенсорами ви розживетесь з часом, їх можна буде як купити, так і зібрати самому з підручного хламу.
І так, спочатку підготовка.
Крок 1. Визначитися з найбільш підходящою для ваших проектів платою. Благо їхній вибір є досить великим, набагато більшим ніж на зображенні.
Для проектів носимих компактних гаджетів є Mini, Nano та Micro. Для чогось більшого ідеально підходить Mega. Особисто я рекомендую для початку брати UNO або трішки докласти та взяти MEGA, сміло можете брати копії, а не оригінали.
Крок 2. Потрібно встановити програмне забезпечення Arduino IDE. Воно є на офіційному сайті, натисніть у списку на вашу операційну систему.
ЗАВАНТАЖИТИ З ОФІЦІЙНОГО САЙТУ
Крок 3. Налаштовуємо це програмне забезпечення(Arduino IDE). Підключаємо нашу плату до свого ПК або Mac. Відкриваємо Arduino IDE. У вкладці “Tools” наводимо курсор на “Board:” та натискаємо на плату, яку ви маєте (назва тієї плати, яку щойно підключили).
Потім у тій же вкладці “Tools” наводимо на “Port:” та вибираємо той порт, до якого підключено Arduino. Скоріш за все програма це зробить за вас.
Ось і все) можна розпочинати створення своїх проектів.
Тож, давайте щось зробимо. Назвемо це нульовим уроком.
Давайте візьмемо звичайний світлодіод та заставимо його блимати, це буде наше своєрідне “Hello, world”. На платах Arduino уже є один впаяний світлодіод і підключений він до 13-го контакту (окрім MKR1000 та Gemma). Якщо ж ви хочете підключити свій, то потрібно буде знайти ще одного резистора, бажано на 220 Ом, його можна знайти на непотрібних схемах, номінал може відрізнятися від 200 Ом аж до 1 кОм, просто яскравість буде більша або менша.
Якщо ви знайшли резистор, його опір можна дізнатись мультиметром або КАЛЬКУЛЯТОРОМ. Нижче деякі приклади опорів які нам підійдуть.
Його одним кінцем припаюєм до плюсового контакту світлодіода. Далі підключаємо “-” світлодіода до контакту “Gnd” на платі, а другий контакт резистора до любого з пінів, які пронумеровані лише числом.
Так, все готово.
Почнемо програмувати.
Програми написані в Arduino IDE називаються скетчами. Скетч складається з двох основних частин: void setup() та void loop(). Тож, яка між ними різниця? В першій частині ми записуємо те, що виконається лише один раз після включення, також тут налаштовують контакти плати, щоб сказати програмі, що контакт повинен робити, а саме видавати струм чи зчитувати його. Після того, як контроллер виконає код з першої частини, він почне циклічно виконувати код з другої частини, тобто раз за разом повторювати її (другу частину).
Програмування в Arduino IDE, як і любе програмування, не є важким, вам просто потрібно чітко зрозуміти те, що має виконатись, скласти алгоритм дій людськими словами, а потім записати це все командами зрозумілими машині і вона крок за кроком виконає їх.
Для цього уроку нам будуть потрібні три команди:
1. pinMode (номер або назва контакту, контакт буде входом чи виходом);
2. digitalWrite (номер або назва контакту, подаєм 0 або 5 Вольт);
3. delay (час в мілісекундах);
В дужках у команд записуються їхні параметри. Першою командою ми ініціалізуємо (створюємо та налаштовуємо) контакт, другою ми подаємо на цей контакт 0 або 5 Вольт. Третя команда каже програмі зупинитися на вказаний час, а після того як він пройде продовжити роботу.
Тож напишемо такий простий код.
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
Готово! Натискаємо кнопку завантажити.
І ось світлодіод блимає.
Тепер можна розібрати те, що ми написали. В першій частині “void setup()” ми вказуємо, що буде використовуватись 13-ий контакт і використовуватись він буде для видачі сигналу, а не для його прийому. OUTPUT і INPUT для видачі та зчитування сигналу, відповідно. Слідуючою іде циклічна частина “void loop()”, все, що в ній записано, буде виконуватись знову і знову. Командою “digitalWrite” ми вибираємо контакт і подаємо на нього сигнал. HIGH та LOW, високий та низький, 5 та 0 Вольт відповідно. Команда “delay(1000)” — чекати одну секунду. Таким чином, підсумуємо те, що робить програма. Виконується перша частина де ми вибираємо контакти з якими працюємо, в даному випадку це 13-ий і він в нас буде виходом. Перша частина виконана. Слідом починає виконуватись друга, циклічна частина. Подаєм на контакт сигнал високого рівня. Світлодіод починає світитися. Чекаємо секунду. Подаєм на контакт слабкий сигнал. Світлодіод перестає світитися. Чекаємо секунду. Вся друга частина виконана і вона починає виконуватись знову і буде так повторюватись доки плата буде підключена до живлення.
Якось так, такий простий, нульовий урок. Попробуйте поексперементувати з частотою миготіння, міняючи параметри команди “delay();”.
P.S. Якщо вам цікава ця тема і ви хотіли б чогось такого навчитися, то оцінюйте цю статтю та пишіть коментарі, побажання, що незрозуміло, поширюйте посилання на цю сторінку. Це буде сильно мене мотивувати до створення нових та нових уроків. І з часом навчити вас створювати автоматизовані системи різноманітної складності. Успіхів Вам, Дякую).
Якщо на вході 0 або одиниця тоді зрозуміло, а якщо треба щоби датчик температури зупинив або розпочав роботу тена? Де в цьому Arduino ховається компаратор?
Скажите, а вы намеренно отрезаете русскоязычную аудиторию от вашего поста?
Просто выглядит довольно интересно и одновременно нечитаемо.
Для него это родной язык, наверняка есть подобные статьи и на английском языке и никому не прийдет в голову задать вопрос типа “а вы чо специально отрезаите русскоязычных?”
ну все же весь портал кедра всю жизнь был с наполнением из русского языка и статьи в целом всегда интересные. Ваш пример с англоязычными сайтами не подходит. Ну в целом я все понял, спасибо за объяснения.
Я розумію російську і можу вільно нею спілкуватися але у мене є проблеми з граматикою і “каверкати” слова не хочеться) Також досить багато часу йде на обробку статті, якщо я ще й почну їх перекладати та виправляти помилки… Я думаю знайдеться аудиторія якій легше буде сприйняти цю тематику українською, адже англомовного та російськомовного контенту такого типу досить багато але він мало розкритий та не до кінця пояснений. Дякую за комент)
vladdnepr1991, у тебе класна стаття, але це трішки інший формат)
Вот моя статейка на эту тему https://keddr.com/2015/10/mikrokontrolleryi-pochemu-etomu-ne-uchat-v-shkole/
Я слишком стар для этого… я могу выкрутить материнку из ноутбука и вкрутить на ее место новую… могу отпаять бусу питания… зачистить и припоять новую… я даже могу прогреть графику чтоб соплю повесить… но блин… вот этого вот все… не для меня… меня уже не научить новым трюкам
Ахаах)))