Допустим, Вы решили оформить написанные Вами функции/классы для 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».