Кліпаємо світлодіодом. Феномен Blynk і його альтернативи Blink проекти

Отже, приступаємо до освоєння. Перший урок не зажадає від вас ніяких матеріалів і просто покликаний ознайомити з простотою ARDUINO. Як в більшості програм ознайомлення починається з «Hello World!» так і ми почнемо з самого простого- миготіння світлодіодом. Що вам для цього буде потрібно: власне сама плата ARDUINO, USB кабель для підключення ARDUINO до комп'ютера, оболонка програмування ARDUINO. Оболонки випускаються нові, але найстабільнішою визнана версія 1.0.6. завантажити ви її можете на офіційному сайті. Це версія для Windows, для Linux качаєте. Відразу варто зрозуміти що для продовження вивчення вам знадобиться макетна плата (замовити в Китаї або купити в інтернет-магазині), дроти (можна купити там же або знайти старі системні блоки і витягнути дроти що йдуть на передню панель, раніше навіть USB на лицьовій панелі з'єднувалися одинарними проводами а не цілим роз'ємом, саме вони вам і подойдут- витягуєте провід, на інший кінець напаяти штирі від роз'ємів на платі, потім одягаєте на місце пайки невеликий шматочок термоусадочної трубки, щоб провід не зламався на місці пайки, нагріваєте і у вас готовий провід мама (штеккер з отвором) - папа (стрижень від плати).

Саморобні дроти для ARDUINO

Таким же чином зробіть Проводу- тато-тато, вони стануть в нагоді для комутації на макетної платі і приєднання ARDUINO до макетної платі. До речі можна, навіть потрібно, зробити такі дроти у вигляді шлейфа- так набагато зручніше з'єднувати ARDUINO з блоками), ну і блоки з якими ви будете працювати (купуються теж в Китаї або в інтернет-магазинах). Вибір датчиків і виконавчих механізмів величезний і не обмежує вашу фантазію. Але на перших порах буде достатньо термодатчика Dallas, Індикатора (можна звичайно і 7 сегментні світлодіодні але вони їдять ток в кілька разів більший ніж 1602 а це негативно позначиться при харчуванні від акумуляторів і батарей, та й виводять вони тільки цифрову інформацію), реле, Все що вам буде потрібно ви завжди зможете докупити. Для тих хто не обмежений у коштах краще відразу купити набір. Хоч це і дорогувато але він відразу відкидає всі проблеми з придбанням датчиків і ви зможете виготовляти пристрої відразу. Вибір все одно буде тільки за вами. Гаразд, заговорився, ближче до теми.

Підключаємо ARDUINO до комп'ютера, запускаємо програму, в програмі заходимо Сервіс Плата-вибираєте вашу плату, все можете працювати!

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

Не гаючи часу робимо наступне: Файл-Приклади-Basics-Blink. Відкриється нове вікно


Blink на ARDUINO

в якому ви побачите програму, можете відразу натиснути на другу кнопку в панелі програми з зображенням стрілки, програма скомпілюється і передасться в ARDUINO, світлодіод на платі блимає! 1 секунду горить, 1 секунду не горить. Розглянемо саму програму. Ви побачите насамперед коментарі відмічені знаками / * Текст * / і // текст . Перший означає що текст від знака /* до знака */ є коментарем і компілятор просто не обробляє і не враховує цю інформацію, дуже зручно писати в таких комбінаціях опис програми, її алгоритм, авторство і багато іншого. знак // коментує лише рядок. Причому ви можете писати цей знак як на початку рядка, так і після будь-яких рядків програми, але ні в якому разі не перед рядками програми- програма вважатиме весь рядок за коментар.

наприклад:

digitalWrite (13, HIGH); // turn the LED on (HIGH is the voltage level)- правильно

// turn the LED on (HIGH is the voltage level) digitalWrite (13, HIGH);- неправильно

Якщо ви хочете зробити коментар перед оператором в одному рядку то скористайтеся комбінацією / * Текст * / , тобто рядок буде виглядати так: / * Turn the LED on (HIGH is the voltage level) * / digitalWrite (13, HIGH);

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

Наступне що ви увідіте- наступний текст:

// the setup function runs once when you press reset or power the board
void setup () (
// initialize digital pin 13 as an output.
pinMode (13, OUTPUT);
}

У коментарі написано що функція установки викликається тільки один раз коли ви скидаєте або перезапітиваете ARDUINO. Тобто або натискаєте кнопку скидання на самій платі або знову підключаєте харчування.

Потім йде оператор void setup () (....)- початківець власне секцію установок для даного скетчу (так називається програма для ARDUINO).

У наступному коментарі написано що визначаємо 13 пін ARDUINO як вихід. Хочу нагадати що на сторінці описані Піни плати, так ось 13 висновок є цифровим (про що написано в підписах до виходів) і може приймати тільки 2 стану- включено (при цьому на нього подається напруги порядку 5В), тобто логічна 1 (одиниця), або вимкнене (напруги немає) тобто логічний 0 (нуль). При нулі все одно є невелика напруга на піне але вони низьке по відношенню до логічної одиниці. Крім того до 13 піну підключений через резистор світлодіод на самій платі, саме він і блимає при виконанні програми.

pinMode (13, OUTPUT);- pinMode- перекладається як режим Піна, 13- номер Піна, OUTPUT- вихід, тобто рядок означає що 13 висновок буде працювати як вихід, OUTPUT, якщо написати INPUT то це вже буде ЦИФРОВИЙ ВХІД, тобто ви можете обробляти на цей пін ЦИФРОВІ дані.

Якщо ви підключите до 13 піну світлодіод з послідовно приєднаним резистором на 1кОм, а іншу ніжку до піну GND то світлодіод буде блимати разом з світлодіодом на платі. Якщо він у вас не замігал- поміняйте полярність світлодіода.

Наступні рядки є програмою яка описує дії з портом:

// the loop function runs over and over again forever
void loop () (
digitalWrite (13, HIGH); // turn the LED on (HIGH is the voltage level)

digitalWrite (13, LOW); // turn the LED off by making the voltage LOW
delay (1000); // wait for a second


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

digitalWrite (13, HIGH); // turn the LED on (HIGH is the voltage level) - digitalWrite- записати ЦИФРОВИЙ сигнал, 13- номер Піна, HIGH- високий рівень, тобто логічна одиниця (напруга близько 5В), далі коментар що включаємо світлодіод високим логічним рівнем.

delay (1000); // wait for a second- delay (затримка), чекаємо тисячі мілісекунд або 1 секунду. Потрібний оператор, особливо при обробці натискань кнопки, в даному випадку він використовується як вказівку чекати 1 секунду після включення 13 Піна.

digitalWrite (13, LOW); // turn the LED off by making the voltage LOW- як і перший рядок циклу вказує що 13 пін треба перемкнути, тільки тепер на рівень LOW- низький рівень, логічний нуль (напруга близько 0В).

delay (1000); // wait for a second- знову затримка 1 сек перш ніж цикл почнеться виконуватися заново.

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

Програма найпростіша, зрозуміла з першого разу але в ній є недоліки: оператор delay змушує ARDUINO чекати поки він не закінчить свою роботу, тобто в цей момент МК і не виконує жодних ніякі дані, просто кажучи він чекає виконання оператора, ладно якщо значення невисокі, а якщо потрібно оперативно обробити дані? За 1 секунду дані можуть змінитися не одну сотню разів, а МК не враховує їх, він чекає виконання програми. Для того щоб не пропускати надходять дані можна скористатися наступним скетчем. Відкриваємо скетч: Файл-Прімери- Digital- BlinkWithoutDelay. Відкриється вікно такого змісту:

/ * Blink without Delay

Turns on and off a light emitting diode (LED) connected to a digital
pin, without using the delay () function. This means that other code
can run at the same time without being interrupted by the LED code.

The circuit:
* LED attached from pin 13 to ground.
* Note: on most Arduinos, there is already an LED on the board
that's attached to pin 13, so no hardware is needed for this example.

created 2005
by David A. Mellis
modified 8 Feb 2010
by Paul Stoffregen
modified 11 Nov 2013
by Scott Fitzgerald

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
*/

// constants will not change. Used here to set a pin number:
const int ledPin \u003d 13; // the number of the LED pin

// Variables will change:
int ledState \u003d LOW; // ledState used to set the LED

// Generally, you shuould use «unsigned long» for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis \u003d 0; // will store last time LED was updated

// constants will not change:
const long interval \u003d 1000; // interval at which to blink (milliseconds)

void setup () (

pinMode (ledPin, OUTPUT);
}

void loop ()
{




// blink the LED.

if (currentMillis - previousMillis\u003e \u003d interval) (


if (ledState \u003d\u003d LOW)
ledState \u003d HIGH;
else
ledState \u003d LOW;



}
}

Пропускаємо всі коментарі і переходимо до рядка:

// constants will not change. Used here to set a pin number:
const int ledPin \u003d 13; // the number of the LED pin

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

const int ledPin \u003d 13; // the number of the LED pin- const означає константу, тобто постійну величину яку не можна змінити в програмі, int- скорочено від слова integer, означає тип даних який може набувати значень від -32768 до 32768. Крім integer є ще 5 типів даних. Чим вони відрізняються? Вони відрізняються розмірами, тобто наприклад в змінну типу byte можна записати всього 256 значень, різниця в размерах- int-2 байта (крім ARDUINO DUE, в ньому INT займає вже 4 байта але значення приймає від -2147483648 до 2147483647), byte як і написано-1 байт. У великих програмах економія пам'яті є дуже важливим моментом і тому намагайтеся уникати де тільки можна застосування більш «важких» типів якщо можна обійтися «легкими» типами. Наприклад тут вистачило б типу byte тому 13 вписується в межа між 0 і 255, та й інші цифрові Піни теж би вписалися в цей тип даних. ledPin - назва самої константи. 13- значення константи, з коментаря вище зрозуміло що ця константа буде використана для вибору Піна.

// Variables will change:
int ledState \u003d LOW; // ledState used to set the LED

Коментар каже що змінна буде змінюватися в програмі

int ledState \u003d LOW; // ledState used to set the LED- оголошує змінну ledState має початкове значення LOW (логічний нуль) і коментар що змінна ledState буде використовуватися для світлодіода (LED по не нашому).

// Generally, you shuould use «unsigned long» for variables that hold time
// The value will quickly become too large for an int to store
// will store last time LED was updated

Коментар каже що ви повинні використовувати змінну типу unsigned long для часу, наступний рядок попереджає що значення буде занадто великим для змінної типу int для зберігання. Unsigned long застосовується для зберігання ЧИСЕЛ і може зберігати значення від 0 до 4294967295 займаючи 4 байта.

unsigned long previousMillis \u003d 0; // will store last time LED was updated- створює змінну previousMillis типу unsigned long і привласнює значення 0, в ній буде зберігається час коли було оновлено стан світлодіода.

// constants will not change:
const long interval \u003d 1000; // interval at which to blink (milliseconds)

Теж константа, типу long, призначена для зберігання ЧИСЕЛ, займає 4 байта і може приймати значення від -2147483648 до 2147483647, interval- назву змінної, 1000- значення змінної. У коментарі підписано що це буде інтервал миготіння в мілісекундах.

void setup () (
// set the digital pin as output:
pinMode (ledPin, OUTPUT);
}

Функція знайома по попередньому прикладу, тільки тут вказується пін не відкрито а через змінну ledPin, Яка описана у нас як константа і має значення 13. Тобто це рівнозначно тому що якщо було б написано pinMode (13, OUTPUT);

Ну і власне тіло програми:

void loop ()
{
// here is where you'd put code that needs to be running all the time.

// check to see if it's time to blink the LED; that is, if the
// difference between the current time and last time you blinked
// the LED is bigger than the interval at which you want to
// blink the LED.

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

unsigned long currentMillis \u003d millis ();

Оголошується змінна currentMillis типу unsigned long яка зберігає дані оператора millis (). millis ()- внутрішній оператор МК вказує скільки мілісекунд пропрацював ARDUINO.

if (currentMillis - previousMillis\u003e \u003d interval) (
// save the last time you blinked the LED
previousMillis \u003d currentMillis;

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

if (умова \u003d\u003d значення) (

Дія якщо умова виконується

else (

Дія якщо умова не виконується

Знак \u003d\u003d може змінюватися на будь-які інші знаки\u003e,<,>=, <=, != (не равно). Условие как и значение может высчитываться. Если условие не выполнено то программа переходит в секцию else. Довольно часто секцию else не используют а просто пишут программу дальше. Это уже зависит от алгоритма работы программы и должно быть продумано заранее. Условий может быть сколько угодно и они могу быть вложены друг в друга, т.е. пока не выполнится одно условие- другое даже выполняться не начнет.

Отже оператор if віднімає з поточних мілісекунд попереднє значення і порівнює зі змінною interval. Якщо значення менше то програма виходить з умови і починається спочатку, якщо більше або дорівнює то змінної previousMillis присвоюється значення currentMillis і програма переходить на наступний крок:

// if the LED is off turn it on and vice-versa:
if (ledState \u003d\u003d LOW)
ledState \u003d HIGH;
else
ledState \u003d LOW;

У цій секції з'ясовується який стан у світлодіода, якщо на світлодіод подавався низький рівень LOW то змінної ledState присвоюється значення HIGH, і навпаки (секція else) якщо був високий рівень HIGH то змінної ledState присвоюється значення LOW. Зауважте що тут if використовується вже без (). Це допускається якщо потрібно обробити в секції виконання не більше 1 рядка.

// set the LED with the ledState of the variable:
digitalWrite (ledPin, ledState);

Ну і нарешті записуємо на значення змінної ledPin (воно дорівнювало 13), значення змінної ledState. Тобто даний рядок може бути записана як digitalWrite (13, LOW); або digitalWrite (13, HIGH); в залежності від часу роботи МК. Зверніть увагу що використаний оператор digitalWrite- саме він вказує що треба передати значення в логічному форматі, тобто нуль або одиницю. Більше він ніяких значень прийняти не може. Будь-які інші значення ledState будуть автоматично приведені до логічної 1.

}
}

Ось і розібрана робота другої програми. Яка різниця між першою і другою програмою якщо вони виконують одне і теж дія але в другій написано раз в 5 більше рядків? Як я і говорив що перша програма просто чекає коли закінчить свою роботу оператор delay і тільки потім продовжить роботу. Під час delay ви не зможете обробляти ніяких даних. Друга програма дозволяє отримувати, обробляти і передавати інформацію під час миготіння світлодіода. Просто дописуєте потрібний код в секцію loop і насолоджуєтеся роботою! Ми з моїм другом підрахували що код пробігається в другому випадку близько 4 млн. Раз в секунду, тому затримок практично немає.

Ну а тепер найголовніше. Через деякий час, награвшись, ви скажете- «Че толку то блимати лампочкою ... Де це можна використовувати? Тільки індикатор того що пристрій працює ... »Ви будете не зовсім праві. У вас є інструмент, що ви з його допомогою можете зробити-це тільки ваша вина якщо ви нічого не можете придумати. Це як будь-якій людині дати повний набір інструментів і попросити що-небудь зробити, наприклад комплект столярного інструменту вручити чоловікові, хто то буде все життя стругати одну і ту ж дошку, дивуючись чистоті з якої рубанок струже і намагаючись нагострити залізяку якомога гостріше, а хтось то буде робити в цей самий час високоякісну меблі. Ким будете ви- вирішувати тільки Вам. Ще моя порада, де то я вичитав, навіть не помню- «НЕ ШУКАЙТЕ ПРОБЛЕМИ, ШУКАЙТЕ ЇХ ВИРІШЕННЯ!» Якщо ви будете користуватися таким підходом у вас виникне набагато менше всяких ЯК і ЧОМУ. Ну а тепер про миготіння світлодіодом. В інтернеті купа порад по користуванню різними індикаторами, звичайно це красиво, надає якусь значимість автору і т.д ... але це зачіпає найголовніше економія пинов і пам'яті. Для того щоб підключити індикатор 1602 треба зайняти 6 цифрових пинов + 2 дроти живлення! Це якщо не користуватися протоколом I2C. До того ж бібліотека на LCD займає 4кБ. І ніхто не думає про подальшу функціональності, ну погралися індикатором і все теж кинули. Невже ніхто не задавався питанням що можна одним світлодіодом отримувати всю необхідну інформацію? Наприклад помилки. Написали функцію і передаєте в неї код помилки. Це ж зручно-не треба знову розбирати код а просто подивитися що не так працює. Або, наприклад, мій друг зібрав на ARDUINO mini контролер газового котла, тобто по температурі в будинку (знімається датчиком Dallas), включався / відключався циркуляційний насос. Коли насос був відключений, котел нагрівався до 40 ° С і стояв на запальнику, температура в кімнаті падала- включався насос і при охолодженні теплоносія котел сам включався. Дуже зручно і з'явилася суттєва економія газу! Всього за якихось 200-300 рублів він економив кожен день по кілька кубів газу! Він тоді все думал- як же відстежити температуру в кімнаті без підключення будь-яких WiFi і комп'ютерів, я предложіл- нехай світлодіод блимає стільки разів, скільки градусів в кімнаті ... Посміялися кінцево 20-25 разів вважати з будь-якого помилишся, тоді я предложіл- нехай блимає спочатку десятки градусів а через паузу- одиниці, наприклад 24 градуси, спочатку 2 рази моргнув, через паузу ще 4. Усе! Ніяких більше індикаторів! І це можна застосувати в будь-якій області! Шукайте нестандартні підходи і намагайтеся економити енергію і входи. Навіть якщо використовуєте I2C. Всім удачі в освоєнні МК і, зокрема, ARDUINO.

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

необхідні елементи

Для даного прикладу Вам знадобиться плата Arduino (в даному випадку - Arduino Uno R3, але Ви зможете пропрацювати цей приклад, маючи в наявності і іншу плату) і кабель USB (типу A (4х12 мм) - B (7х8 мм) - більш детально можна почитати на Вікі).

Що таке "L" світлодіод


На Arduino Uno присутні ряди конекторів типу мама з боків плати, які використовуються для підключення периферійних електронних пристроїв або "Шілд".

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

Розташування даного світлодіода на платі відзначено на фото знизу.


Завантаження прикладу "Blink" (миготіння) в Arduino IDE

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

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

Прийшов час перевірити Ваше підключення і запрограмувати плату.

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

Відкрийте приклад "Blink", який знаходиться в пункті меню File - Examples - 01.Basics

Після відкриття, розширте вікно оболонки Arduino IDE, щоб Ви могли весь скетч в одне вікні.

Скетчі із прикладів, включені в Arduino IDE передбачають режим "тільки читання" ( "read only"). Тобто, завантажити їх на плату Ви зможете, але після зміни коду, Ви не зможете їх зберегти в тому ж файлі.

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

Ви зберегли копію скетчу "Blink" у Вашій бібліотеці. Тепер відкрити цей файл Ви можете в будь-який момент, перейшовши по вкладці File - Scetchbook.

Завантаження прикладу "Blink" (миготіння) на плату

Підключіть свою плату Arduino до комп'ютера за допомогою USB і перевірте тип плати ( "Board type") і серійний порт ( "Serial Port"), за яким вона підключена.

Поточні параметри відображаються внизу вікна оболонки Arduino IDE

Натисніть на кнопку "Завантажити" ( "Upload")

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

В кінці статус зміниться на "Завантаження завершено" ( "Done uploading"). У повідомленні, яке з'явиться в текстовому рядку відобразиться інформація про те, що завантажений скетч займає 1,084 байта з 32,256 доступних.

Іноді при компіляції у Вас може виникнути подібна помилка:

Причин може бути декілька: Ви не підключили плату до комп'ютера; Ви не встановили необхідні драйвера; Ви вибрали некоректний серійний порт.

Пояснення до скетчу "Blink"

Нижче представлений код скетчу "Blink".

Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.

// Pin 13 has an LED connected on most Arduino boards.

// give it a name:

pinMode (led, OUTPUT);

delay (1000); // wait for a second

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

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

// the setup routine runs once when you press reset:

// initialize the digital pin as an output.

pinMode (led, OUTPUT);

Кожен скетч Arduino зобов'язаний включати в себе функцію "setup" і частина, в яку ви можете додавати власні інструкції, укладені між (). У нашому прикладі у функції присутній тільки одна команда, в якій зазначено, що пін, який ми використовуємо, налаштовується на "висновок" ( "Output"). Також обов'язковим для будь-якого скетчу є функція циклу "Loop". На відміну від функції "Setup", яка відпрацьовує один раз після перезавантаження, функція "Loop" після закінчення роботи команд, знову запуститься.

// the loop routine runs over and over again forever:

digitalWrite (led, HIGH); // turn the LED on (HIGH is the voltage level)

delay (1000); // wait for a second

digitalWrite (led, LOW); // turn the LED off by making the voltage LOW

delay (1000); // wait for a second

У тілі функції "Loop" світлодіод включається (HIGH), дане значення затримується на 1000 мілісекунд (1 секунда), світлодіод відключається (LOW) і залишається вимкненим на 1 секунду, після чого цикл повториться.

Зміна частоти миготіння світлодіода

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

Як вже було зазначено, період затримки вказується в мілісекундах. Тобто, для того, щоб змусити світлодіод блимати в два рази частіше, необхідно змінити значення від 1000 на 500. В результаті, пауза між включенням / виключенням світлодіода складе половину секунди і світлодіод буде блимати швидше.

Для перевірки, не забудьте завантажити змінений скетч на плату Arduino.

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

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

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

Стандартні бібліотеки Ардуіно

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

Список вбудованих бібліотек (вони поставляються разом з дистрибутивом Arduino IDE):

  • EEPROM
  • Ethernet / Ethernet 2
  • Firmata
  • LiquidCrystal
  • Servo
  • SoftwareSerial
  • Stepper

Підбірка бібліотек в одному архіві

Якщо у вас немає часу на детальний аналіз безлічі сайтів і ви хочете завантажити все необхідне для роботи з зовнішніми пристроями Ардуіно в одному архіві, ми підготували список 40 найпопулярніших бібліотек. Просто і розпакуйте його вміст (папку libraries) в папку Arduino.

Бібліотеки для екранів, індикаторів і дисплеїв

бібліотека I2C

Бібліотека, призначена для роботи периферійного пристрою по протоколу I2C.

Приклад використання:

#ifndef I2C_MASTER_H

#define I2C_MASTER_H

void I2C_init (void) - створення об'єкта, настройка на правильну частоту для шини.

uint8_t I2C_start () - щоб установити з новим пристроєм.

uint8_t I2C_write () - запис даних на поточний пристрій.

uint8_t I2C_read_ack () - зчитування байта з пристрою, запит наступного байта.

бібліотека LiquidCrystal

Стандартна бібліотека, встановлена \u200b\u200bв Arduino IDE. Призначена для управління рідкокристалічними дисплеями LCD.

Приклад використання:

#include . Також, щоб не помилитися при написанні, можна підключити через меню Sketch - Import Library - LiquidCrystal.

Конструктор класу - LiquidCristal (...). Аргументами є rs, rw, en, do ... d7. Перші 3 відповідаю висновків сигналів RS, RW і Enable. Висновки d відповідають номерам шин даних, до яких підключений дисплей.

void begin (cols, rows) - метод, який ініціалізує інтерфейс дисплея. Аргументами є кількість знаків у рядку (cols) і число рядків (rows). Цей метод повинен задаватися першим.

void createChar (num, data) - метод, необхідний для створення користувацьких символів.

бібліотека UTFT

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

Приклад використання:

#include

UTFT (); - створення екземпляра UTFT.

textRus (char * st, int x, int y); - метод, що дозволяє виводити рядок з покажчика. Наприклад, char * dht \u003d "Температура, С";

textRus (string st, int x, int y); - висновок рядка із зазначенням в параметрі. Наприклад, g.textRus ( "Температура, С", 0, 20);

бібліотека LedControl

Дозволяє управляти семисегментними дисплеями, об'єднувати масив зі світлодіодів в одну матрицю.

Приклад використання:

#include

LedControl lc1 \u003d LedControl ();

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

writeArduinoOn7Segment () - показує на дисплеї всіх чисел від 0 до 15. Використовує функції setChar () для символів a і d і setRow () для створення макета пропущених символів.

LedControl.shutdown () - відключення зображення.

setIntensity () - контроль яскравості.

Бібліотеки для роботи з датою і часом Ардуіно

бібліотека RTClib

Бібліотека для роботи з годинником реального часу, яка спрощує взаємодію з Ардуіно.

Приклад використання:

#include

RTC_DS1307 RTC; - вибір датчика (в даному випадку DS1307).

rtc.adjust (DateTime (Date, Time)); - настройка часу і календаря.

dayOfTheWeek () - висновок дня тижня. Аргумент від 0 до 6, 0 - неділя.

бібліотека Timelib

Дозволяє Ардуіно отримувати інформацію про дату і час в даний момент.

Приклад використання:

#include

Time (); - створення екземпляра.

setTime (t); - установка часу. Аргумент t - година, хвилина, секунда, день, місяць і рік.

timeStatus (); - показує, чи встановлено час.

adjustTime (adjustment); - настройка часу.

бібліотека Ds1307

Бібліотека для зручного взаємодії годин DS1307 з Ардуіно c використанням бібліотеки Wire.

Приклад використання:

#include

class DS1307RTC - створення об'єкта DS1307.

SetTime () - установка часу.

get () - зчитує RTC, повертає отриману дату в форматі POSIX.

Set (time_t t) - запис дати в RTC

Бібліотека DS 3231

Призначена для управління датою і часом в модулі ds3231.

#include "ds3231.h"

DS3231 Clock (SDA, SCL); - створення об'єкта DS3231, підключення до лінії тактирования і лінії даних.

getTime (); - зчитування дати і часу з годин.

setDate (date, mon, year); - установка дати.

Системні бібліотеки Ардуіно

бібліотека EEPROM

Стандартна бібліотека. Призначена для роботи з енергонезалежною пам'яттю (запис даних, їх читання).

Приклад використання:

#include

EEPROM.read (); - створення об'єкта, зчитування байта за адресою з незалежної пам'яті.

EEPROM.write (address, value) - запис байта в незалежну пам'ять.

EEPROM.put () - запис рядків чисел з плаваючою комою.

EEPROM.get () - читання рядків і чисел з плаваючою комою.

бібліотека SoftwareSerial

Бібліотека, яка дозволяє реалізовувати послідовні інтерфейси з будь-яких цифрових пинов. Також дозволяє створювати кілька послідовних портів, які працюють на швидкості до 115200 бод.

#include

SoftwareSerial mySerial (RX, TX) - створення об'єкта, аргументи - висновки, до яких підключені RX і TX.

Serial.begin (); - встановлює швидкість порту для зв'язку Ардуіно і комп'ютера.

mySerial.overflow () - перевірка вхідного буфера на переповнення.

бібліотека Math

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

Приклад використання:

#include

Math (); - створення екземпляра Math.

Serial.print ( "cos num \u003d"); - повертає косинус числа.

Serial.println (fmod (double__x, double__y)); - повертає числа по модулю.

бібліотека Scheduler

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

Приклад використання:

#include

Scheduler; - створення екземпляра.

Scheduler.startLoop () - дозволяє додати функцію, яка буде виконуватися разом з loop ().

yield () - дозволяє передати управління іншим завданням.

Бібліотеки серво моторів і крокових двигунів

бібліотека Servo

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

Приклад використання:

#include

Servo myservo; - створення об'єкта для серводвігателя ..

myservo.attach (); - номер виходу, до якого підключений серводвигун.

myservo.write (180, 30, true); - рух на 180 градусів, швидкість 30, очікування закінчення руху.

бібліотека Stepper

Небхідно для управління кроковим уніполярним і біполярним двигуном.

#include

const int stepsPerRevolution \u003d; - кількість кроків, за яке двигун проходить повний поворот.

Stepper myStepper \u003d Stepper (steps, pin1, pin2) - створює екземпляр класу з вказаною кількістю кроків і висновками, до яких підключається двигун.

Бібліотеки датчиків Ардуіно

бібліотека DHT

#include< DHT.h>

DHT dht (DHTPIN, DHT11); - ініціалізує датчик (в даному випадку DHT11).

dht.begin (); - запуск датчика.

float t \u003d dht.readTemperature (); - зчитування поточного значення температури в градусах Цельсія.

бібліотека DallasTemperature

Призначається для роботи з датчиками Dallas. Працює спільно з бібліотекою OneWire.

#include

DallasTemperature dallasSensors (& oneWire); - передача об'єкта oneWire для роботи з датчиком.

покласти її в регістр.

printTemperature (sensorAddress); - запит отримати виміряне значення температури.

бібліотека Ultrasonic

Забезпечує роботу Ардуіно з ультразвуковим датчиком вимірювання відстані HC-SR04.

#include

Ultrasonic ultrasonic (tig, echo) - оголошення об'єкта, аргументи - контакт Trig і контакт Echo.

dist \u003d ultrasonic.distanceRead (); - визначення відстані до об'єкта. Агрумент - сантиметри (СМ) або дюйми (INC).

Timing () - зчитування тривалості імпульсу на виході Echo, переклад в необхідну систему числення.

бібліотека ADXL345

Призначається для роботи з акселерометром ADXL345.

Приклад використання:

#include

ADXL345_ADDRESS - створення об'єкта, вказівка \u200b\u200bйого адреси.

ADXL345_REG_DEVID - ідентифікація пристроїв.

ADXL345_REG_OFSX - зміщення по осі Х.

ADXL345_REG_BW_RATE - управління швидкістю передачі даних.

бібліотека BME280

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

Приклад використання:

#include

BME280_ADDRESS - створення об'єкта BME280, вказівка \u200b\u200bйого адреси.

begin (uint8_t addr \u003d BME280_ADDRESS); - початок роботи датчика.

getTemperature - отримання виміряної температури.

getPressure - отримання виміряного тиску.

бібліотека BMP280

Потрібно для роботи з датчиком атмосферного тиску BMP280.

Приклад використання:

#include

BMP280_CHIPID - створення екземпляра, вказівка \u200b\u200bйого адреси.

getTemperature (float * temp); - отримання виміряної температури.

getPressure (float * pressure); - отримання виміряного значення тиску.

бібліотека BMP085

Потрібно для роботи з датчиком тиску BMP085.

Приклад використання:

#include

Adafruit_BMP085 bmp; - створення екземпляра BMP085.

dps.init (MODE_ULTRA_HIGHRES, 25000, true); - вимірювання тиску, аргумент 25000 - висота над рівнем моря (в даному випадку 250 м. Над рівнем моря).

dps.getPressure (& Pressure); - визначення тиску.

бібліотека FingerPrint

Потрібно для роботи зі сканером відбитків пальців.

приклад використання:

#include

Adafruit_Fingerprint finger \u003d Adafruit_Fingerprint (& mySerial); - оголошення об'єкта Finger. Параметр - посилання на об'ектр для роботи з UART, кокторій підключений модуль.

finger.begin (); - ініціалізація модуля відбитків пальців.

Func_sensor_communication (); - виклик модуля відбитків пальців.

бібліотеки комунікації

бібліотека Wire

Потрібно для роботи з двопровідним інтерфейсом I2C.

Приклад використання:

#include

Wire.begin () - ініціалізація бібліотеки, підключення до шини I2C.

Wire.requestFrom () - запит майстром байтів від веденого пристрою.

Wire.beginTransmission () - початок передачі на ведене пристрій.

бібліотека Irremote

Потрібно для роботи Ардуіно з ІК приймачем.

Приклад використання:

#include

IRrecv irrecv (RECV_PIN); - пін, до якого підключений ІК приймач.

SetPinAndButton (int ir1, int ir2, int pin) - дозволяє налаштувати певний вихід на спрацьовування при заданих значеннях ir1, ir2.

бібліотека GSM

Потрібно для з'єднання через GSM-плату з мережею GSM / GRPS. З її допомогою можна реалізувати операції, здійснювалися GSM-телефоном, працювати з голосовими викликами і підключатися до мережі інтернет через GRPS.

Приклад використання:

#include

GSM GSMAccess - ініціалізує екземпляр класу.

gprs.powerOn () - включення харчування.

GPRS - настройка підключення до інтернету.

GSM - управління радіо-модемом.

бібліотека RFID

Потрібно для з'єднання Ардуіно і RFID-модуля.

Приклад використання:

#include

RFID rfid (SS_PIN, RST_PIN); - створення екземпляра rfid, аргументи - Піни, до яких підключений модуль.

rfid.init (); - ініціалізація модуля RFID.

Бібліотека MFRC 522

Потрібно для з'єднання Ардуіно і MFRC522-модуля.

Приклад використання:

#include

MFRC522 mfrc522 (SS_PIN, RST_PIN); - створення екземпляра MFRC522, аргументами вказані виходи, до яких підключений модуль.

mfrc522.PCD_Init (); - ініціалізація MFRC522.

бібліотека Ethershield

Нова версія https://github.com/jcw/ethercard

Потрібно для підключення Ардуіно до локальної мережі або мережі інтернет. Бібліотека більше не підтримується, новіша версія Ethercard. Також існує стандартна бібліотека Ethernet.

Приклад використання:

#include «EtherShield.h»

#include

EtherShield es \u003d EtherShield (); - підготовка веб-сторінки

ether.begin (sizeof Ethernet :: buffer, mymac,); - початок роботи, аргументи - адреса Mac і номер порту, до якого підключений вихід CS.

бібліотека Nrf24l01

Потрібно для роботи з RF24-радіомодулем.

Приклад використання:

#include "RF24.h"

RF24 - Конструктор створює новий екземпляр драйвера. Перед тим, як використовувати, потрібно створити екземпляр і вказати Піни, до яких підключений чіп (_cepin: контакт модуля Enable, cspin: контакт модуля Select).

Begin - початок роботи чіпа.

setChannel - канали для зв'язку RF.

setPayloadSize - установка фіксованого розміру передачі.

getPayloadSize - отримання фіксованого розміру.

бібліотека TinyGPS

Потрібно, щоб читати повідомлення GPGGA і GPRMC. Допомагає зчитувати дані про становище, дату, час, висоті і інших параметрах.

Приклад використання:

#include

TinyGPS gps; - створення екземпляра TinyGPS.

encode () - подача на об'єкт послідовних даних по одному символу.

gps.stats () - метод статистики. Показує, отримані коректні дані чи ні.

Бібліотеки в Arduino IDE

Серед усього розмаїття бібліотек можна виділити 3 основні групи:

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

Найпростішим способом роботи з бібліотеками в Ардуіно є використання вбудованих можливостей середовища розробки Arduino IDE. Про це ми поговоримо в окремій статті.

  • 220 ohm resistor

Circuit

This example uses the built-in LED that most Arduino and Genuino boards have. This LED is connected to a digital pin and its number may vary from board type to board type. To make your life easier, we have a constant that is specified in every board descriptor file. This constant is LED_BUILTIN and allows you to control the built-in LED easily. Here is the correspondence between the constant and the digital pin.

  • D13 - 101
  • D13 - Due
  • D1 - Gemma
  • D13 - Intel Edison
  • D13 - Intel Galileo Gen2
  • D13 - Leonardo and Micro
  • D13 - LilyPad
  • D13 - LilyPad USB
  • D13 - MEGA2560
  • D13 - Mini
  • D6 - MKR1000
  • D13 - Nano
  • D13 - Pro
  • D13 - Pro Mini
  • D13 - UNO
  • D13 - Yún
  • D13 - Zero

If you want to lit an external LED with this sketch, you need to build this circuit, where you connect one end of the resistor to the digital pin correspondent to the LED_BUILTIN constant. Connect the long leg of the LED (the positive leg, called the anode) to the other end of the resistor. Connect the short leg of the LED (the negative leg, called the cathode) to the GND. In the diagram below we show an UNO board that has D13 as the LED_BUILTIN value.

The value of the resistor in series with the LED may be of a different value than 220 ohm; the LED will lit up also with values \u200b\u200bup to 1K ohm.

Schematic

Code

After you build the circuit plug your Arduino or Genuino board into your computer, start the Arduino Software (IDE) and enter the code below. You may also load it from the menu File / Examples / 01.Basics / Blink. The first thing you do is to initialize LED_BUILTIN pin as an output pin with the line

pinMode (LED_BUILTIN, OUTPUT);

In the main loop, you turn the LED on with the line:

digitalWrite (LED_BUILTIN, HIGH);

This supplies 5 volts to the LED anode. That creates a voltage difference across the pins of the LED, and lights it up. Then you turn it off with the line:

digitalWrite (LED_BUILTIN, LOW);

That takes the LED_BUILTIN pin back to 0 volts, and turns the LED off. In between the on and the off, you want enough time for a person to see the change, so the delay () commands tell the board to do nothing for 1000 milliseconds, or one second. When you use the delay () command, nothing else happens for that amount of time. Once you "ve understood the basic examples, check out the example to learn how to create a delay while doing other things.

Once you "ve understood this example, check out the example to learn how read a switch connected to the board.

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

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

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

Для того, щоб скористатися програмою Ардуіно емулятора - вам потрібно зареєструватися на сайті tinkercad.com. Далі ми повинні вибрати компоненти:

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

Крок 1: Ланцюг світлодіодного резистора

Починаємо роботу з емулятором Ардуіно з ланцюга світлодіода і резистора.

Ніжки світлодіода з'єднані з двома контактами на Arduino: земля і пін 13. Компонент між світлодіодом і виведенням 13 резистор, який допомагає обмежити струм, щоб світлодіод не зайнявся сам. Без цього ви емуляторі отримаєте попередження про те, що світлодіод може незабаром згоріти. Не має значення, чи йде резистор до або після світлодіода в ланцюзі. Кольорові смуги ідентифікують значення резистора і для схеми проекту підійдуть від 100 до 1000 Ом.

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

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

На панелі компонентів емулятор Ардуіно Tinkercad перетягніть резистор і світлодіод на робочу область. Змініть значення резистора, відрегулювати його на 220 Ом в інспектора компонентів, який проявляється у разі обрання резистор.

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

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

Крок 2: Простий код з блоками

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

Код починається з двох сірих блоків коментарів, які є просто нотатками для людей. Перший синій вихідний блок встановлює вбудований світлодіод як HIGH, який є способом Arduino для опису «включено». Ця вихідна команда активує сигнал 5 В на все, що пов'язано з зазначеним висновком. Далі - жовтий командний блок, який чекає одну секунду, досить просто. Таким чином, програма призупиниться, поки світлодіод горить протягом однієї секунди. Потім після наступного коментаря йде синій вихідний блок, який встановить світлодіод назад в LOW або «вимкнений», за яким слідує друга пауза в секунду.

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

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

Чи готові створити свій власний проект? Виберіть Arduino, яку ви додали на робочу область (або виберіть її в спадному меню в редакторі коду), і почніть перетягування блоків коду, щоб створити свою власну програму миготливого світлодіода.

Крок 3: Пояснення коду

Давайте тепер поговоримо про коді при роботі Ардуіно емулятора.

Коли редактор коду відкритий в емуляторі, ви можете клацнути меню, що випадає зліва і вибрати «Блоки + Текст» (Blocks + Text), щоб відкрити код Arduino, згенерований блоками коду. Всі додаткові символи є частиною синтаксису Arduino, але не лякайтеся! Потрібен час, щоб навчитися писати правильний код з нуля. Тут ми розглянемо кожну частину, і ви завжди можете використовувати блоки для порівняння і підвищення свого рівня.

Ми не знаємо якою версією ви користуєтеся, тому код ми залишимо таким, який був у нас.

/ * This program blinks pin 13 of the Arduino (the built-in LED) * /

Цей перший розділ представляє собою коментар блоку заголовка, що описує, що робить програма. Блокові коментарі відкриваються так /* і закриваються так */ .

Void setup () (pinMode (13, OUTPUT);)

Далі приведена регіональні настройки, яка допомагає налаштувати те, що потрібно вашій програмі пізніше. Вона запускається один раз і містить всі що потрібно всередині своїх фігурних дужок (). У нашому проекті потрібно налаштовує висновок 13 як вихід, який готує плату для відправки сигналів на неї, а не прийому.

Void loop () (// включите світлодіод (HIGH - рівень напруги) digitalWrite (13, HIGH); delay (1000); // Зачекайте 1000 мілісекунд // вимкніть світлодіод, зробивши напруга LOW digitalWrite (13, LOW); delay (1000 ); // Зачекайте 1000 мілісекунд)

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

Більше корисного про програмування Ардуіно ви знайдете в нашій статті "".

Використовувана команда виведення називається digitalWrite (), Яка є функцією, яка встановлює або видає значення HIGH або LOW. Щоб призупинити програму ми будемо використовувати функцію delay (), яка займає кілька мілісекунд (1000 мс \u003d 1 с).

Крок 4: Використання налаштувань для початківців

Це схема, яку, як ми думаємо, ви захочете використовувати часто, збережена в розділі для початківців (Blink Circuit Starter) емулятора Ардуіно.

Взяти цю схему і код в будь-який час можна використовуючи розділ "стартер" для початківців, доступний на панелі компонентів в випадаючому меню

Starters → Arduino

Для більш просунутою версією цього коду Arduino можна подивитися варіант "Blink Without Delay" (Моргание без затримки), який використовує поточний час для відстеження інтервалів миготіння замість delay ();.

Крок 5: Програмуємо реальну Ардуіно

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

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

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

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

Поділитися: