мига

В тази статия ще ви покажа практически пример за свързване и програмиране на Arduino. Това е и програмирането "Hello World" с Arduino. В нашия случай това е "Arduino LED мига".

Мигането на светодиода може да се осъществи без никакви други компоненти с която и да е платка за развитие на Arduino. В този пример това ще бъде Arduino UNO. Това ще бъде най-лесното нещо, което можете да направите с вашия Arduino. Така че нека стигнем до него.

Какво ще ми трябва за мигащ светодиод Arduino?

За да мигате светодиода, ще ви трябва разработка, напр. Arduino UNO, свързване на USB кабел и компютър със изтеглена програма Arduino IDE (щракнете върху връзката, там ви написах инструкциите за инсталиране). Текущата версия винаги може да бъде изтеглена от уебсайта arduino.cc. И разбира се малко време и търпение.

Също така ще е подходящо опитайте да мигате не само с вграден светодиод диод, но и с външен светодиод. Това ще изисква поне един цветен светодиод и 220Ω резистор и малко макет - това е полето за контакт на захранването.

И как да го свържа?

За целта имаме електрическа схема. Всеки компонент има своя собствена електротехника марка, където са маркирани с него търговски обекти, евентуално стойности. Такава схема изглежда напр. както следва:

Това е типично свързване на интегриран светодиод директно на стандартни дъски Arduino. Бъдете внимателни, но има и някои дъски, които могат да го имат на друг бор (MKR1000) или дори изобщо да не го имат (Arduino DUE).

Виждате на диаграмата голям правоъгълник Arduino с писмени описания и светодиод с резистор е свързан последователно 220Ω между щифт D13 и GND (GND е земята или минус полюс). Светодиодът е електронен елемент - уред (точно като крушка, електрически мотор, ...). Технически тези елементи се наричат ​​задвижващи механизми и управляващата верига (Arduino) контролира захранването към тях и по този начин влияе на тяхното състояние. В най-простия случай просто включваме или изключваме захранването - задвижването е в активно състояние или в покой (включване/изключване, ...).

Свържете външния светодиод заедно с резистора, както е показано на следващата фигура. Забележете, че сега е свързан с щифт D9. Защо да закача D9? Ами защото реших, че я искам на този бор. ПИНът знае нещо допълнително. Малките букви ШИМ могат да показват това. Ще разберете какво означават по-късно. Сега просто го включете така.

Резисторът трябва да бъде точно 220Ω?

Това е правилният въпрос. Особено ако нямате резистор с такава стойност, но имате подобен. Arduino, към който искате да свържете светодиода, има ограничен максимален ток, който е в състояние да достави на изхода. Максималният ток през един щифт (крак) е 40mA. Препоръчва се товарен щифт до 20mA. Следователно можете да свържете светодиода директно към изхода на Arduino, но напр. не крушка или електрически мотор, те обикновено имат много по-висока консумация на ток.

За ограничаване на протичащия ток се използва резистор. Какво по-висока стойност на съпротивлението има резистор, екип по-малко ток тече диод и диодът ще са около него неясен. Така че при стойността на резистора 220ie токът тече, нека му дадем около 11mA (зависи от цвета на диода), при стойността на резистора 1kΩ той вече е около 3mA. Дори при такъв слаб ток светодиодът ще свети меко (но имаме минимална консумация на енергия). И ако поставите там резистор със стойност 150Ω, токът ще тече около 20mA, светодиодът ще светне по-ярко.

И дори не мислете за свързване на светодиода към Arduino без резистор. Защо? Няма прото! Лебо претоварвате щифта Arduino с ток по-голям от 40mA и изпуска необратимо скрит дим и светодиодът отново последната си светкавица 🙂

Но внимавай, максималният ток за целия Arduino също е ограничен - всички щифтове заедно макс. 200mA. Така можете да свържете максимум 10 едновременно осветени светодиода с ток от 20 mA или да използвате по-нисък ток благодарение на резистор с по-висока стойност на съпротивлението, като по този начин увеличавате броя на светодиодите, които могат да светят едновременно. За ток от 10mA можете да ги свържете 20. В една статия подготвих и изчислението на резистора за светодиода за определен ток. Разбира се, това се отнася не само за Arduino, но и за други интегрални схеми, където можете да намерите техните максимални изходни токове в листа с данни.

Трябва да свържа резистор пред светодиода или зад светодиода?

И така, какво мислите? Има ли значение или не? Защото те са замесени в поредица, протича през двата компонента същия ток, така че не ги интересува в какъв ред са замесени.

Така че да, няма значение дали резисторът е пред или зад светодиода. Можете да използвате това, за да проектирате разположението на компонентите на печатна платка.

И как да завъртя светодиода?

За разлика от крушките, които нямат значение за полярността на захранващото напрежение и следователно са в състояние да работят на променливо напрежение, Светодиодите, свързани неправилно, не работят, не запалвайте. За да се определи правилна полярност Най-безопасно е да погледнете неговия каталожен лист (т.е. лист с данни), който е един вид свидетелство за раждане на всеки компонент. Но най-бързият начин е да изпробвате най-добрия мултицет.

Следващия методи за определяне таблицата със снимката показва:

знак: + -
полярност: положителен отрицателен
изход: анод (A) катод (K)
изход: дълго къс
случай отвън: заоблени апартамент
вътре в кутията: по-малък по-голям

Първо свържете по-дългият светодиод "крак" (положителен анод) на резистора. И сега подобно и логично свържете късия си крак (отрицателен катод) със земята (GND - земя).

А какво да кажем за програмния код?

Няма нужда да описвате или търсите и изтегляте нещо от интернет? Отговорът е НЕ. Всичко, от което се нуждаете, е Arduino IDE щракнете в менюто до „Файл“ и сред „Основните“ примери намери „Примигвай“. Готово, програмата ще се отвори и ще видите нещо подобно:

Не забравяйте след свързване на платката проверете COM номер на порта a настройка правилният съвет за развитие. А сега кликнете върху втората икона (стрелка вдясно) или натиснете „CTRL + U“ и тази програма ще се зареди в Arduino и вашият светодиод ще мига. Но кой светодиод ще мига? Интегрираният на дъската или външният на борда? Качете кода и ще видите.

Тъй като Arduino знае къде е свързан моят светодиод?

Не, той го направи той не знае, трябва да го направиш по някакъв начин Да кажа. Познаваш го програма. Както вероятно вече разбрахте при зареждането на програмата от примера, интегрираният светодиод мига на интервали от около секунда.

Сега имате това дисектираме програмата и ще опитаме някои корекции. Ние искаме да за да направите външната LED светкавица.

И така, какво означават тези цветни думи?

Цялото програмата за Arduino се състои от две части - функции. В офиса невалидна настройка са командите, които ще бъдат изпълнени само веднъж след включване (или след нулиране). Тогава Arduino ще започне през цялото време изпълнете командите, изброени наоколо в офиса празен цикъл. Затова първите команди ще се научим те ще бъдат за контролиране на отделните щифтове (крака) на Arduino. За начало ни трябват само две състояния (изключено или включено), т.е. цифров контрол. Първото нещо, което трябва да направим, е настройвам или дадено щифт ще бъде допускане (сигналът ще се подава към Arduino отвън) или изход (Arduino ще контролира нещо). За това се използва функцията pinMode (команда) (щифт, режим).

Тази функция pinMode е във функцията за настройка, защото трябва да я изпълним само веднъж, когато стартираме програмата. Все още няма да включим този светодиод, просто ще кажем на Arduino, че искаме този извод да бъде изведен. Например записът може да изглежда така:

Е, хей, но в примера виждам LED_BUILTIN, а не номера на пина, какво е това?

Това е приятно дефинирана константа, която е настроена така, че според избраната платка в IDE на Arduino автоматично да я направите присвоява ПИН номер (в такъв случай 13), към който е прикрепен на дъската вътрешен светодиод. Трябва да запомните, както писах по-горе, че някои платки имат този светодиод, свързан с други щифтове. И тъй като има усилия за писане на програми универсален за различни видове платки и вие като програмист-разработчик не знаете коя платка ще свърже потребителят, така че ще се използва такава константа и тя ще се погрижи за вас и ще присвои правилния номер на пина на вътрешния светодиод.

О, така че когато пренапиша думата LED_BUILTIN на 9 навсякъде, външният светодиод ще мига.?

Точно. Цялата програма ще изглежда така:

Това ли е цялата програма? И къде изчезнаха останалите англоезични редове?

Това бяха бележките на програмиста. Пиша как се използват правилно в тази статия.

Е, да продължим. Втората функция, от която ще се нуждаем, е задаване на стойността на изходния бор и за това ще използваме друга команда digitalWrite (щифт, стойност).

Тази команда вече е във функцията цикъл. Това вече е част от програма, която постоянно ще ни се повтаря. Писането на тази команда изглежда така:

И остана още една команда за забавяне (1000). За какво е?

Това казва на Arduino да спря за малко. Това време е 1000. Тази стойност е дадена в милисекунди. Това закъснение на командата (1000) ti ще спре изпълнението на вашата програма за 1000 милисекунди, което е една секунда. Следователно можете да видите, че светодиодът мига на интервали от секунда, защото е между две команди digitalWrite.

Ако сте пропуснали тази команда, ще видите светодиода да свети с по-ниска яркост. Опитай. Също опитайте да промените тази стойност напр. до 500. Играйте с тези стойности, имате Arduino за това.

Е, как работи всичко?

Когато обобщавам цялата програма на нашия език, тя изглежда така. Първо ще настроя щифт 9 на изхода. След това, в цикъла, задавам този пин на HIGH, който включва светодиода, след това изчаквам 1s, след това изключвам диода и изчаквам отново за една секунда. След това програмата стартира отново с цикъл на цикъла от командата за задаване на ПИН на HIGH и така през цялото време.

И когато chem имат светодиоди на друг бор?

Трябва ли да пренапиша всички числа 9? Не може да се промени веднъж на едно място? Е, представете си, че това би било възможно и съвсем просто.

Когато пренаписвате номер 9 на друг ПИН номер, рискувате да го забравите някъде. Особено при по-дълги програми. Затова е по-подходящо да се въведе т.нар символно именуване вместо конкретен номер на пин и след това го използвайте, както следва в програмата. Ние прилагаме това т.нар директива за препроцесор. Как Подобно на константата LED_BUILTIN.

Такова име за себе си сега ние ще създаваме и точно две различни. В края на краищата, ние също трябва да променим времето.

Сега физически свържете светодиода към щифт 10, заредете програмата и светодиодът сега ще мига на бор 10 и по-бързо. Променете стойността на 500 на по-ниска и намалете малко светодиода, така че да мига по-бързо. Опитайте се да дефинирате две различни времена - едната за дължината на осветяване, а другата за дължината на неосветеността. Напр. Светодиодът свети за 2 секунди и изключва за половин секунда.

Светодиодът може да бъде свързан и по други начини?

Да, той ще. Изключете вашия Arduino. Първо свържете този път по-късият светодиод "крак" (положителен катод) на резистора, свързан към щифт 10 (просто завъртете физически светодиода в борда). И сега свържете по подобен начин нейния по-дълъг крак (отрицателен анод) сега, но към + 5V. Накратко, Светодиодът вече е свързан към + 5V, а не към GND. Тук той е нарисуван на снимката разлика в връзката.

Включете Arduino и ако имате записана програма, при която светодиодът трябва да е включен за 2 секунди, а не за половин секунда, ще установите, че тя работи сега точно обратното. Това означава, че сега с командата digitalWrite няма да включите светодиода със стойност HIGH, но ще го изключите (по същия начин обратното важи и за LOW).

И защо е така? Тъй като токът протича от положителния полюс + 5V към отрицателния полюс GND. Сега погледнете внимателно картината.

В първия случай към щифт D9 се прилага стойността HIGH + 5V и токът преминава през резистора и светодиода надолу към земята GND и светодиодът свети. Когато LOW стойността е 0V (GND) на бор D9, токът не тече никъде (не тече от GND към GND).

Във втория случай към пин D9, задайте HIGH на + 5V и светодиодът също е свързан към + 5V, така че токът също не тече (от + 5V до + 5V). Но ако поставим стойността LOW (GND) на този щифт D9, тогава светодиодът ще светне. Поне малко е ясно?

Какво друго трябва да знам?

Определено поне как не унищожавайте Arduino, когато е включен. С това се справям в отделна статия „Как да (не) унищожим Arduino“. Препоръчвам ви да разгледате това, за да избегнете грешки, тъй като неправилното окабеляване може потенциално да повреди дъската на Arduino.

И какво следва?

Е, беше ли трудно да включите и програмирате Arduino? Предполагам, че не. Какво ви очаква по-нататък? Настройте тази програма, за да функционира забавяне в програмата изобщо не се е случило. Честно казано, тази команда трябва да се избягва и да се използва възможно най-малко, така че програмата да не стои ненужно на вашето място на едно място, но да прави и нещо друго полезно.

Най-близкият пример ще бъде мига с множество светодиоди с различно време на мигане. Или колко тече яркостта на светодиода светва като при димер? Това ще бъде споменато ШИМ. Как може да се направи това с Arduino? Това ще бъде обсъдено в следващата статия.