категории: Препоръчани статии » Практическа електроника
Брой преглеждания: 67360
Коментари към статията: 7
Свързване и програмиране на Arduino за начинаещи
Дали изучаването на микроконтролери изглежда сложно и неразбираемо? Преди появата на Arudino наистина не беше лесно и изискваше определен набор от програмисти и друго оборудване.
Какво е Arduino?
Това е един вид електронен конструктор. Първоначалната цел на проекта е да позволи на хората лесно да се научат как да програмират електронни устройства, като същевременно отделят минимално време за електронната част.
Сглобяването на най-сложните вериги и свързването на платките може да се извърши без поялник и с помощта на джъмпери с разглобяеми връзки „баща” и „майка”. По този начин могат да бъдат свързани както прикачени файлове, така и разширителни карти, които в лексикона на ардуинистите просто се наричат „щитове“.
![Какво е Arduino? Какво е Arduino?](https://e.imadeself.com/uploads/posts/2017-11/1511427973_2.jpg)
Какъв е първият борд на Arduino, който е закупен за новак?
Разгледана е основата и най-популярната дъска Arduino uno, Тази такса прилича на кредитна карта. Доста голям. Повечето щитове, които се продават, са идеални за нея. На платката има гнезда за свързване на външни устройства.
![Arduino uno Arduino uno](https://e.imadeself.com/uploads/posts/2017-11/1511429278_arduino.png)
В домашните магазини за 2017 г. цената му е около 4-5 долара. В съвременните модели Atmega328 е нейното сърце.
Декодиране на изображение и функция на дъската на Arduino на всеки пин, извод на Arduino UNO
Микроконтролерът на тази платка е дълъг чип в пакета DIP28, което означава, че има 28 крака.
Следващият най-популярен борд струва почти два пъти по-евтино от предишния - 2-3 долара. Това е дъската Arduino nano, Действителните табла са изградени от един и същ Atmega328, те са функционално подобни на UNO, разлики в размера и решението за съвпадение с USB, повече за това по-късно. Друга разлика е, че за свързване на устройства към платката е предвиден щепсел под формата на игли.
![Arduino nano Arduino nano](https://e.imadeself.com/uploads/posts/2017-11/1511427969_4.jpg)
Броят на щифтовете (краката) на тази платка е един и същ, но можете да наблюдавате, че микроконтролерът е направен в по-компактен пакет TQFP32, ADC6 и ADC7 са добавени в случая, а другите два „допълнителни“ крака дублират захранващата шина. Размерите му са доста компактни - за размера на палеца на ръката ви.
Третият най-популярен борд е Arduino Pro Mini, той няма USB порт за свързване към компютър, ще ви кажа как да комуникирате малко по-късно.
![Сравнение на размер на Arduino Nano срещу Pro Mini Сравнение на размер на Arduino Nano срещу Pro Mini](https://e.imadeself.com/uploads/posts/2017-11/1511428035_6.jpg)
Сравнение на размер на Arduino Nano срещу Pro Mini
Това е най-малката дъска от всички разглеждани, иначе тя е подобна на предишните две, а Atmega328 все още е нейното сърце. Няма да разглеждаме други табла, тъй като това е статия за начинаещи, а сравнението на дъските е тема на отделна статия.
Arduino Pro Mini pinout, в горната част, схемата за свързване USB-UART, пин "GRN" - е свързана към веригата за нулиране на микроконтролера, може да се нарече различно, за което трябва да разберете по-късно.
резултати:
Ако UNO е удобен за създаване на прототипи, тогава Nano и Pro Mini са удобни за окончателните версии на вашия проект, защото заемат малко място.
![Arduino за начинаещи Arduino за начинаещи](https://e.imadeself.com/uploads/posts/2017-11/1511427992_25.jpg)
Как да свържете Arduino към компютър?
Arduino Uno и Nano се свързват с компютър чрез USB. В същото време няма хардуерна поддръжка за USB порта, тук се използва решение за верига за преобразуване на ниво, обикновено наричано USB-към-сериен или USB-UART (rs-232). В същото време в микроконтролера се мига специален зареждащ механизъм Arduino, който позволява мигане по тези шини.
В Arduino Uno тази лигатура е реализирана на микроконтролер с USB поддръжка - ATmega16U2 (AT16U2). Оказва се, че допълнителният микроконтролер на платката е необходим за мигане на основния микроконтролер.
В Arduino Nano това се реализира от чипа FT232R или неговия аналог CH340. Това не е микроконтролер - това е конвертор на нива, този факт улеснява сглобяването на Arduino Nano от нулата със собствените си ръце.
Обикновено драйверите се инсталират автоматично, когато Arduino платката е свързана. Въпреки това, когато купих китайско копие на Arduino Nano, устройството беше разпознато, но не работеше, кръгъл стикер с данни за датата на пускане беше залепен на конвертора, не знам дали е направен нарочно, но след като го отлепих, видях маркировката CH340.
Преди това не се сблъсквах с това и мислех, че всички USB-UART конвертори са сглобени на FT232, трябваше да изтегля драйвери, те са много лесни за намиране по заявка на драйвер „Arduino ch340“. След проста инсталация - тя работи!
Чрез същия USB порт може да се захранва и микроконтролерът, т.е. ако го свържете към адаптера от мобилен телефон, системата ви ще работи.
Какво трябва да направя, ако моята платка няма USB?
Arduino Pro Mini е по-малък. Това беше постигнато чрез премахване на USB конектора за фърмуера и същия USB-UART конвертор. Следователно, той трябва да бъде закупен отделно. Най-простият конвертор на CH340 (най-евтиният), CPL2102 и FT232R, за продажба струва от $ 1.
Когато купувате, обърнете внимание на това за какво напрежение е предназначен този адаптер. Pro mini се предлага във версии 3.3 и 5 V, на преобразувателите често се намира джъмпер за превключване на захранващото напрежение.
![Arduino Pro Mini Arduino Pro Mini](https://e.imadeself.com/uploads/posts/2017-11/1511428039_8.jpg)
Когато мигате Pro Mini, точно преди да започне, трябва да кликнете върху RESET, но в конвертори с DTR не е необходимо да правите това, схемата на свързване на фигурата по-долу.
![Свързваща схема за фърмуер Свързваща схема за фърмуер](https://e.imadeself.com/uploads/posts/2017-11/1511428001_9.jpg)
Към тях се присъединяват специални терминали "Mama-Mama" (женско-женско).
![Arduino връзка Arduino връзка](https://e.imadeself.com/uploads/posts/2017-11/1511427986_10.jpg)
Всъщност всички връзки могат да бъдат направени с помощта на такива терминали (Dupont), те са както от двете страни с контакти, така и с щепсели, и от едната страна на контакта, и от другата щепсела.
![щепсел щепсел](https://e.imadeself.com/uploads/posts/2017-11/1511428018_11.jpg)
Как да пиша програми за Arduino?
За да работите със скици (името на фърмуера е на езика на arduino), има специална интегрирана среда за разработване на Arduino IDE, можете да го изтеглите безплатно от официалния уебсайт или от всеки тематичен ресурс, обикновено няма проблеми с инсталирането му.
Ето как изглежда програмният интерфейс. Можете да пишете програми на опростения C AVR език, специално разработен за arduino, всъщност това е набор от библиотеки, наречени Wiring, както и в чист C AVR. Използването му улеснява кода и ускорява работата му.
В горната част на прозореца има познато меню, в което можете да отворите файла, настройки, да изберете дъската, с която работите (Uno, Nano и много, много други), както и да отворите проекти с готови примери за код. По-долу е набор от бутони за работа с фърмуер, клавишите, които ще видите на фигурата по-долу.
![Програмен интерфейс Програмен интерфейс](https://e.imadeself.com/uploads/posts/2017-11/1511427988_13.jpg)
В долната част на прозореца е зона за показване на информация за проекта, състоянието на кода, фърмуера и наличието на грешки.
Основи за програмиране на Arduino IDE
В началото на кода трябва да декларирате променливи и да свържете допълнителни библиотеки, ако те съществуват, това се прави по следния начин:
#include biblioteka.h; // свържете библиотеката с името „Biblioteka.h“
#define peremennaya 1234; // Деклариране на променлива със стойност 1234
Командата Define позволява на компилатора да избере типа на променливата, но можете да я зададете ръчно, например, цяло число int или float с плаваща запетая.
int led = 13; // създаде променливата "led" и й присвои стойността "13"
Програмата може да определи състоянието на щифта като 1 или 0. 1 е логическа единица, ако щифт 13 е 1, тогава напрежението на физическия му крак ще бъде равно на захранващото напрежение на микроконтролера (за arduino UNO и Nano - 5 V)
Цифровият сигнал се записва с помощта на командата digitalWrite (пин, стойност), например:
digitalWrite (доведе, високо); // запишете уреда в пин 13 (обявихме го по-горе) дневник. Unit.
Както можете да разберете, достъпът до портовете е чрез номериране на дъската, съответстваща цифра. Ето пример, подобен на предишния код:
digitalWrite (13, висока); // поставете щифт 13 на едно
Често търсената функция за забавяне на времето се извиква от командата delay (), стойността на която е зададена в милисекунди, микросекунди се постигат с помощта
забавянеМикросекунди () Забавяне (1000); // микроконтролерът ще изчака 1000 ms (1 секунда)
Настройките на порта за вход и изход се задават във функцията за настройка на празнотата {} с командата:
настройка за невалидност () {
pinMode (NOMERPORTA, OUTPUT / INPUT); // аргументи - име на променлива или номер на порт, вход или изход за избор
}
Пусков цикъл {}
Разбиране на първата програма Blink
Като един вид "Здравей, свят" за микроконтролерите, има LED мигаща програма, нека анализираме нейния код:
В началото с командата pinMode казахме на микроконтролера да присвои порт на светодиода към изхода.Вече забелязахте, че кодът не декларира променливата „LED_BUILTIN“, факт е, че в Uno, Nano и други платки от фабриката, вграденият светодиод е свързан към пин 13 и е споен на платката. Може да се използва от вас за индикация във вашите проекти или за най-проста проверка на вашите мигащи програми.
След това задаваме изхода, към който светодиодът е споен до единица (5 V), следващият ред кара MK да изчака 1 секунда и след това задава извода LED_BUILTIN на нула, изчаква секунда и програмата се повтаря в кръг, така че когато LED_BUILTIN е 1 - светодиодът ( и всеки друг товар, свързан към порта), е включен, когато при 0 е изключен.
Всичко работи и всичко е ясно? След това продължете!
Ние четем стойността от аналоговия порт и използваме прочетените данни
Микроконтролерът AVR Atmega328 има вграден 10-битов аналогово-цифров преобразувател. 10-битовият ADC ви позволява да четете стойността на напрежението от 0 до 5 волта, на стъпки от 1/1024 от целия обхват на амплитудата на сигнала (5 V).
За да стане по-ясно, помислете за ситуацията, да предположим, че стойността на напрежението на аналоговия вход е 2,5 V, тогава микроконтролерът ще прочете стойността от щифт "512", ако напрежението е 0 - "0", и ако 5 V - (1023). 1023 г. - защото броят минава от 0, т.е. 0, 1, 2, 3 и т.н. до 1023 - само 1024 стойности.
Ето как изглежда в кода, използвайки стандартната скица “analogInput” като пример
int sensorPin = A0;
int ledPin = 13;
int sensorValue = 0;
настройка за невалидност () {
pinMode (ledPin, OUTPUT);
}
void loop () {
sensorValue = analogRead (sensPin);
digitalWrite (ledPin, HIGH);
забавяне (sensorValue);
digitalWrite (ledPin, LOW);
забавяне (sensorValue);
}
![Схемата за свързване на потенциометъра към Arduino, по аналогия, централният изход, който можете да свържете към всеки аналогов вход Схемата за свързване на потенциометъра към Arduino, по аналогия, централният изход, който можете да свържете към всеки аналогов вход](https://e.imadeself.com/uploads/posts/2017-11/1511427979_15.jpg)
Схемата за свързване на потенциометъра към Arduino, по аналогия, централният изход, който можете да свържете към всеки аналогов вход.
Деклариране на променливи:
-
Ledpin - независимо да присвоите щифт с вграден светодиод към изхода и да дадете индивидуално име;
-
sensorPin - аналогов вход, зададен съответно на маркировката на платката: A0, A1, A2 и др .;
-
sensorValue - променлива за съхранение на целочислена стойност на четене и по-нататъшна работа с нея.
Кодът работи така: sensorValue запазва прочетената аналогова стойност с sensorPin (команда analogRead). - тук работата с аналоговия сигнал приключва, тогава всичко е както в предишния пример.
Пишем единицата в ledPin, светодиодът се включва и изчакваме време, равно на стойността на sensorValue, т.е. от 0 до 1023 милисекунди. Изключете светодиода и изчакайте отново този период от време, след което кодът се повтаря.
По този начин, чрез позицията на потенциометъра, задаваме мигащата честота на светодиода.
Карта функция за Арудино
Не всички функции на задвижващите механизми (не знам никакви) поддържат „1023“ като аргумент, например, сервото е ограничен от ъгъла на въртене, тоест с половин оборот (180 градуса) (половин оборот) на сервомотора, като максималният аргумент на функцията е „180“
Сега за синтаксиса: map (стойността, която превеждаме е минимален вход, максимален вход, минимален изход, максимален изход).
В кода изглежда така:
(карта (analogRead (пот), 0, 1023, 0, 180));
Ние четем стойността от потенциометъра (analogRead (pot)) от 0 до 1023, а на изхода получаваме числа от 0 до 180
Стойности на карта на стойност:
-
0=0;
-
1023=180;
На практика ние прилагаме това към кода на същия серво, погледнете кода с Arduino IDE, ако внимателно прочетете предишните раздели, тогава той не изисква обяснение.
![](https://e.imadeself.com/uploads/posts/2017-11/1511428018_16.png)
И схемата на свързване.
![Схема на свързване Схема на свързване](https://e.imadeself.com/uploads/posts/2017-11/1511427978_17.png)
Изводи Arduino е много удобен инструмент за обучение за работа с микроконтролери. И ако използвате чист C AVR или както понякога се нарича „Pure C“, значително ще намалите теглото на кода и ще се побере повече в паметта на микроконтролера, в резултат на което ще получите отлична фабрично направена дъска за отстраняване на грешки с USB фърмуер.
![Arduino за начинаещи Arduino за начинаещи](https://e.imadeself.com/uploads/posts/2017-11/1511427957_18.jpg)
Мнение на автора:
Харесвам ардуино. Жалко е, че много опитни програмисти на микроконтролери го критикуват неоснователно, че е твърде опростен. По принцип само езикът е опростен, но никой не ви принуждава да го използвате, плюс това можете да мигнете микроконтролера през ICSP конектора и да попълните кода, който искате, без никакви зареждащи устройства, от които не се нуждаете.
За тези, които искат да играят с електроника, като усъвършенстван конструктор, той е перфектен, но за опитни програмисти, полезна, която не изисква монтаж, също ще бъде полезна!
За повече информация за Arduino и характеристиките на използването му в различни схеми вижте електронната книга -Arduino за манекени. Илюстрирано практическо ръководство.
Вижте също на e.imadeself.com
: