Librarytutorial програмиране на Ардуино

Създайте своя собствена библиотека за Arduino

Този документ ще ви помогне да разберете как да създадете библиотека за Arduino. На първо място, програма, която генерира сигнали за морзовата азбука ще бъдат обсъдени, а след това даде обяснение, че да е функция в отделна библиотека. Използване на библиотеки позволяват други хора да използват код, написан от вас, както и лесно да го актуализират и нови версии на вашата библиотека.

Да започнем с една програма, която генерира прост сигнал в морзов код:

Ако използвате тази програма, можете да сте сигурни, че той осигурява SOS (дистрес) диода свързан до заключението, 13.

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

Това е време, за да направим нашата програма библиотека!

За да направите това, ще трябва най-малко два файла: заглавния файл (разширение .h) и източник файл (с разширение .cpp). Файлът с удар с глава е библиотека Описание: често, това е просто списък на всичко, което е в него. File съдържа изходния код на софтуера директно на библиотеката. Ние наричаме нашата библиотека "Морз", съответно, нашият файл заглавието е "Morse.h". Нека да видим какво има вътре този файл. Първоначално, съдържанието на файла, може да изглежда малко странно, но всичко ще си дойде на мястото, веднага след като те видя на изходния код, бягане "пълно".

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

Class - това е просто колекция от функции и променливи на едно място. Тези функции и променливи могат да бъдат публични (обществени) - т.е. могат да бъдат причинени от хора, работещи с библиотеката, или на вътрешния (частни) - които са видими само в рамките на самия клас. Всеки клас има специална функция, наречена конструктор (конструктор), който има за цел да се създаде инстанция (например) клас. Конструкторът има същото име като на класа, а не връщане на стойност.

И накрая, прието да се заключи, цялото съдържание на заглавната част на файла в един странен строителство:

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

Нека да разгледаме заглавната част на файла и да видим какво имаме:

А сега нека да разгледаме съдържанието на файла източник - Morse.cpp.

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

След това е действителната сорс кода на оригиналната програма (добре, най-накрая!). Тя изглежда точно същото, с изключение на префикса Morse :: преди имената на функцията и променлива _pin вместо ПИН:

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

Първо, създаване на папка в директорията на Морз на библиотеките в работата си папка с проекта. Копиране или преместване на Morse.h и Morse.cpp файлове в папката, която сте създали. Сега тече развитие среда Arduino - в менюто Sketch> Импорт библиотека, трябва да видите Morse библиотека. Тя автоматично ще бъде съставен с молбата да го използвате. Ако не - да следи за неговото разширяване и се уверете, че форматът на файла е наистина .cpp или .h (без допълнителни разширения като .pde или .txt, например).

Нека се опитаме да пренапише нашата стара програма "SOS" с нова библиотека:

В сравнение с предишната версия на програмата има някои разлики (освен факта, че част от кода се прехвърля към библиотеката).

На първо място, ние добавихме #include изявление в началото на програмата, която включва библиотеката в Морзовата азбука, изпратен от дъската. Ето защо, ако вече не се използва библиотеката на програмата, е желателно да се премахне #include, за да запазите паметта на микроконтролера.

На второ място, ние вече конкретни примери Morse клас, наречен Морс:

При извършване на тази линия (в действителност, това се случва дори за настройка () функция) клас конструктор се нарича Morse, където споменатото тук аргумент (в този случай 13) се прехвърля.

Моля, имайте предвид, че сега е нашата настройка функция () е празна, защото pinMode на повикване () в този случай се случва в рамките на библиотеката (при създаването на инстанция).

И накрая, точката на повикване () и тире (), сега трябва да се предхожда с морзова азбука. - името на потребителския модел, който искаме да използваме. Ние можем да създадем няколко екземпляра на класа Morse, всяка със собствена продукция, записано във вътрешната променлива _pin само в този случай. Което показва специфичен пример за извикване на функция, ние по този начин да попитам, какво например променливи трябва да работят една или друга функция. Това означава, че ако имаме две копия на:

вътре morse2.dot () _pin променлива ще бъде равна на 12 функции.

Когато пишете нова програма, вие ще забележите, че IDE не признава и не се осветява елементите на библиотеката, създаден от нас. За съжаление, IDE Arduino не е в състояние автоматично да разпознават и интерпретират това, което е обявено в библиотеката (между другото, би било добре да се добави тази функция), така че тя се нуждае от малко помощ. За да направите това, да създадете файл keywords.txt в директорията на Морз и пише следното в него:

Всеки ред трябва да съдържа ключовата дума раздела характер (без интервали) и въведете ключова дума. Класове са подчертани в оранжево, и трябва да бъдат от тип KEYWORD1; функция - кафяв и трябва да бъде от тип KEYWORD2. За да може промените да влязат в сила, трябва да рестартирате Arduino околната среда.

Ако искате да видите готовата библиотека (с примера и ключовата дума) - можете да го кажа от тук: Morse.zip.

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