Освой Arduino играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Arduino использует C++, поэтому, библиотеку придётся писать на этом языке. Для новой библиотеки нужно создать дополнительный класс с кодом, который будет взаимодействовать с устройством.
Нам понадобится один заголовочный файл .h, в котором будет описан ваш класс с функциями, константами. А также второй файл .cpp, в котором все эти объявленные функции и константы реализуются.
Для начала создадим в папке ..\libraries собственную папку с именем библиотеки, например, Kitty.
Внутри папки Kitty создаём файлы kitty.h и kitty.cpp.
Библиотеки нужно писать на C++. Если внутри нашей библиотеки используем какие-нибудь функции или объекты из стандартной библиотеки Arduino, то следует подключать соответствующий заголовочный файл Arduino.h.
#include "Arduino.h"
Есть два используемых способа создания класса. Если экземпляр класса может быть только один, то объявляется экземпляр в этом же .h-файле. Примеры таких классов - HardwareSerial, Serial.
Заголовочный файл не содержит выполняемого кода, а лишь определяет имена классов и методов в библиотеке.
Полностью заголовочный файл будет следующего содержания.
/*
Kitty.h - Library for cats.
Created by Alexander Klimov, December 12, 2018.
Released into the public domain.
*/
#ifndef kitty_h
#define kitty_h
#include "Arduino.h"
class Kitty
{
public:
Kitty();
void init();
void meow();
private:
int _counter;
};
#endif
Команда #ifndef предотвращает многократный импорт библиотеки.
Закрытый раздел private содержит переменную. В нашем примере она просто для демонстрации и не используется.
В общедоступном разделе public указаны конструкторы и методы.
Теперь реализуем созданные функции в файле kitty.cpp:
#include "Arduino.h"
#include "kitty.h"
// конструктор вызывается всегда при создании экземпляра класса Kitty
Kitty::Kitty()
{
}
void Kitty::init()
{
Serial.begin(9600);
}
// просто говорим "Meow"
void Kitty::meow()
{
Serial.println("Meow");
}
Теперь нужно перезапустить Arduino IDE, если она у вас была запущена. Откройте меню Sketch | Include Library. Если всё было сделано правильно, то увидите собственную библиотеку.
После создания библиотеки вы можете вносить изменения, которые будут учитываться автоматически.
Если выбрать свою библиотеку, то в скетче появится строка:
#include <kitty.h>
Это означает, что библиотека подключена и мы можем её использовать в скетче.
#include <kitty.h>
Kitty kitty; // создаём экземпляр нашего класса
void setup() {
kitty.init();
}
void loop() {
kitty.meow(); // мяукаем в Serial Monitor
delay(1000);
}
Запускаем скетч, открываем Serial Monitor и наблюдаем за мяуканьем кота. Жрать просит!
Правилом хорошего тона считается создать дополнительный файл keywords.txt и папку examples.
Файл keywords.txt содержит объявления ключевых слов вашей библиотеки, имена типов, методов, функций, констант. Это поможет редактору раскрасить указанные слова соответствующими цветами. Синтаксис файла (в качестве разделителя используйте TAB):
#######################################
# Syntax Coloring Map For Kitty
#######################################
#######################################
# Datatypes (KEYWORD1)
#######################################
Kitty KEYWORD1
#######################################
# Methods and Functions (KEYWORD2)
#######################################
meow KEYWORD2
init KEYWORD2
#######################################
# Constants (LITERAL1)
#######################################
Перезапустите Arduino IDE ещё раз. Теперь названия вашего класса и её функций будут подсвечены.
В папке examples создаются примеры использования в формате pde. Создайте необходимый скетч, переименуйте его в нужный формат и снова перезапустите IDE. Примеры станут доступны для использования.
О созданной библиотеке можно сообщить сообществу на сайте playground.arduino.cc/Main/LibraryList. Можно создать zip-архив или выложить на GitHub.