Освой Arduino играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

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

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. Если всё было сделано правильно, то увидите собственную библиотеку.

Create 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.

Реклама