Створення власної бібліотеки управління сервоприводом

Серія статей: Arduino, використання сервоприводів # 6

Серія статей: Створення бібліотек для Arduino # 1

Ми створили клас для управління сервоприводом. Але якщо ми хочемо застосовувати його в декількох проектах, то для кожного потрібно буде скопіювати один і той-же код. Тому є сенс виділити весь повторюється код в окрему бібліотеку, яку будемо підключати так-же, як і стандартні бібліотеки Arduino

Перший файл, ServoS.h - заголовки (від слова h eader file), тут будуть описуватися сам клас, змінні і функції. При цьому тут мають у своєму розпорядженні тільки список змінних і функцій та їх типів, без тіла самих функцій.

Скопіюємо в файл ServoS.h наш клас ServoClass. точніше тільки змінні і назви функцій:

При створенні бібліотеки можна помітити деякі особливості:

Файл починається з директиви #ifndef ServoS. яка перевіряє, чи не був підключена ця бібліотека раніше. Якщо ми ніде раніше її не підключати, то в програму, буде додано код, що знаходиться між #define ServoS і #endif

Крім того ми визначаємо кілька функцій з одним ім'ям але різними аргументами. Це пов'язано з тим, що при використанні бібліотек виклик функції з меншим, ніж визначено, кількістю аргументів призведе до помилки. Задати значення аргументів за замовчуванням не вийде, точніше для кожного випадку потрібно буде описати окрему функцію. Тому у нас по дві функції AttachServo і MoveTo

Тепер залишилося разобараться з файлом ServoS.cpp. Тут знаходиться код для описаних в заголовки функцій. При цьому нам потрібно вказувати, до якого класу відносяться викликані функції. Оскільки в нашій бібліотеці використовується клас ServoClass. то всі функції будуть ставитися до нього. У разі конструктора, ім'я якого збігається з ім'ям класу, це буде виглядати як ServoClass :: ServoClass (). інші функції - відповідно ServoClass :: ІмяФункціі ();

Якщо під час створення нашій бібліотеці була включаючи середовище Arduino IDE, то її необхідно закрити і заново запустити знову, оскільки вона збирає дані про доступні бібліотеках під час запуску і повинна буде побачити нашу нову бібліотеку

Власне зі створенням бібліотеки ми закінчили, залишилося підключити її до нашої програми. Для цього просто замінимо опис нашого класу з попереднього прикладу на "#include" ServoS.h "" Підключимо два сервоприводу і завантажимо скетч:

Створення власної бібліотеки управління сервоприводом

Результат роботи програми не змінився - перший сервопривід займе зазначене положення відразу, а другий буде повертатися досить повільно (його початково положення 90 градусів, для переміщення в положення 150 градусів потрібно повернутися на 60 градусв. Швидкість 0.5 обороту в хвилину відповідає 3 градуси в секунду, т .е переміщення займе 20 секунд).

Залишилося оформити нашу бібліотеку для більш зручного використання. Якщо використовувати Arduino IDE, то функції стандартних бібліотек підсвічуються кольором, а ось для нашої бібліотеки - немає. Тому потрібно повідомити програмі, які функції потрібно підсвічувати, для цього потрібно створити файл keywords.txt в папці нашої бібліотеки

Помістимо туди інформацію про ключові слова, які потрібно підсвічувати:

Слова, помічені KEYWORD1 будуть підсвічені як тип даних, KEYWORD2 - як функції Між словом і його типом ставиться знак табуляції, між рядками - новий рядок.

Знову перезавантажити Arduino IDE, тепер наш клас і його функції підсвічуються відповідним кольором