Допустим, Вы решили оформить написанные Вами функции/классы для Arduino в библиотеку, чтобы Вам самим было проще с ними работать, и главное, чтобы кто-то другой мог с помощью Вашей библиотеки спокойно решать данные задачи, поминая Вас добрым словом, а не выдумывать новый велосипед.
Опишу минимум особенностей, в расчете на читателя, хотя бы немного знакомого с программированием на C/C++.
Библиотека должна иметь как минимум один .h файл и как правило, один .cpp файл. В .h файле, как водится, описываются все типы/функции/классы/константы, а в .cpp все это реализуется.
Библиотека будет компилироваться без дополнительных преобразований (подробнее тут), поэтому, если Вам потребуются какие-то функции/объекты/константы из стандартной библиотеки Arduino, нужно подключать соответствующие заголовочные файлы (вроде «WConstants.h», «WProgram.h»).
Если я верно понял, правилом «хорошего тона» является оформление кода в виде класса, и если по смыслу выполняемых задач экземпляр этого класса может быть только один, то заодно и объявление этого экземпляра в .h файле:
Написанную библиотеку нужно положить в папку с каким-нибудь подходящим именем в каталог «hardware\libraries», и перезапустить среду Arduino. При запуске среда попытается скомпилировать Вашу библиотеку, и если возникнут ошибки, о них будет сказано.
Неплохо создать в папке с библиотекой файл «keywords.txt», в котором описываются имена типов, методов, функций, констант, используемых в библиотеке, чтобы редактор «раскрашивал» их соответствующими цветами. Синтаксис у файла простой — вот пример (разделитель — TAB):
В качестве примера приведу простенькую библиотечку, которая организует ввод чисел с последовательного порта.
В ходе экспериментов с Arduino бывает удобно написать программку в диалоговой форме, и работать с ней через терминалку (ту же HyperTerminal). Ну и постоянно встает задача ввода чисел — этим библиотека и занимается. Работают с библиотекой примерно так:
Опишу минимум особенностей, в расчете на читателя, хотя бы немного знакомого с программированием на C/C++.
Библиотека должна иметь как минимум один .h файл и как правило, один .cpp файл. В .h файле, как водится, описываются все типы/функции/классы/константы, а в .cpp все это реализуется.
Библиотека будет компилироваться без дополнительных преобразований (подробнее тут), поэтому, если Вам потребуются какие-то функции/объекты/константы из стандартной библиотеки Arduino, нужно подключать соответствующие заголовочные файлы (вроде «WConstants.h», «WProgram.h»).
Если я верно понял, правилом «хорошего тона» является оформление кода в виде класса, и если по смыслу выполняемых задач экземпляр этого класса может быть только один, то заодно и объявление этого экземпляра в .h файле:
extern MyClass MyClassObject;и создание одного глобального объекта в .cpp файле:
MyClass MyClassObject;Например, если мы делаем класс для работы с аппаратным последовательным портом, то поскольку такой порт физически только один, то желательно в самой библиотеке экземпляр класса и создать. Собственно, в стандартной библиотеке объект Serial так и объявлен.
Написанную библиотеку нужно положить в папку с каким-нибудь подходящим именем в каталог «hardware\libraries», и перезапустить среду Arduino. При запуске среда попытается скомпилировать Вашу библиотеку, и если возникнут ошибки, о них будет сказано.
Неплохо создать в папке с библиотекой файл «keywords.txt», в котором описываются имена типов, методов, функций, констант, используемых в библиотеке, чтобы редактор «раскрашивал» их соответствующими цветами. Синтаксис у файла простой — вот пример (разделитель — TAB):
--- keywords.txt --- MyType KEYWORD1 MyFunction KEYWORD2 MY_CONSTANT LITERAL1 ---Кроме того, можно создать папку «examples», куда сложить одну или несколько папок с проектами примеров работы с библиотекой (уже в формате .pde).
В качестве примера приведу простенькую библиотечку, которая организует ввод чисел с последовательного порта.
В ходе экспериментов с Arduino бывает удобно написать программку в диалоговой форме, и работать с ней через терминалку (ту же HyperTerminal). Ну и постоянно встает задача ввода чисел — этим библиотека и занимается. Работают с библиотекой примерно так:
#include <SerialInput.h> void setup() { Serial.begin(9600); } void loop() { long int Number; Serial.print("Enter number: "); Number = SerialInput.InputNumber(); // Здесь ввод и происходит Serial.print("You entered: "); Serial.println(Number, DEC); }Более полный пример идет с библиотекой, скачать которую можно тут: SerialInput.zip Архив разархивировать в папку «hardware\libraries».