Найти тему
ArcadePub

Как написать свою библиотеку под Ардуино

Оглавление
Ардуино библиотека
Ардуино библиотека

Привет! В прошлый раз мы начали знакомство с объектно-ориентированным программированием для Ардуино. В этой теме можно написать много статей и уроков. Мы будем постепенно раскрывать эту область программирования. А сегодня посмотрим, что такое библиотека для программы на Ардуино и оформим класс led из предыдущего урока для использования кода в любом проекте.

Предыдущий урок, в котором мы написали первый класс и начали разговор про объектно-ориентированное программирование моно найти по ссылке.

Сегодня создадим простейшую библиотеку для управления светодиодом на основе класса из предыдущего урока.

Библиотека

В целом, наша библиотека уже создана. Нам нужно только оформить все файлы правильно и добавить несколько необходимых строк кода. Которые не будут менять смысла уже написанных команд в нашем классе.

В первую очередь, нам нужно отделить описание библиотеки от реализации методов класса на два разных файла.

Главный файл библиотеки будет иметь расширение .h

Его мы будем подключать к основной программе. И уже он будет загружать необходимые для нашей библиотеки файлы с кодом и любые другие нужные файлы.

Возьмем описание нашего класса led и сохраним его в отдельный файл led.h

class Led {
public:
Led(int pin);
void on();
void off();
private:
int _pin;
protected:
};

Этот код описывает наш класс led. В нем содержится информация о публичных и приватных методах и свойствах класса. В нашем случае это конструктор, два метода и приватная переменная для номера пина.

Дополним описание класса необходимыми директивами для создания библиотеки и комментариями.

/*
Led.h - Library for turn LED on and off.
Created by Valentin, 18.10.2021.
Released into the public domain.
*/
ifndef Led_h
define Led_h
include "Arduino.h"
class Led {
public:
Led(int pin);
void on();
void off();
private:
int _pin;
protected:
};
endif

В секции комментариев мы описываем библиотеку, чтобы другие разработчики могли понять, для чего и как можно ее использовать.

Конструкция ifndef предотвратит загрузку библиотеки несколько раз, если разработчик попробует это сделать.

ifndef Morse_h
define Morse_h
// the include statment and code go here...
endif

А подключение файла Arduino позволит использовать стандартные функции языка.

include "Arduino.h"

Реализация методов

Теперь подключим код реализации методов класса. Сам код у нас уже есть. Создадим для него отдельный файл с расширением .cpp

/*
Led.cpp - Library for turn LED on and off.
Created by Valentin, 18.10.2021.
Released into the public domain.
*/
include "Arduino.h"
include "led.h"

Led::Led(int pin){
pinMode(pin, OUTPUT);
_pin = pin;
}
void Led::on(){
digitalWrite(_pin, HIGH);
}
void Led::off(){
digitalWrite(_pin, LOW);
}

В файл led.cpp вставим код реализации методов класса и подключим файлы заголовка и стандартных функций Ардуино.

Вот и все, что требуется для написания своей простой библиотеки.

Теперь, в основном тексте программы мы можем подключить библиотеку, и использовать методы, которые она предоставляет.

include "led.h"
Led led(13);
void setup() {
}
void loop() {
led.on();
delay(1000);
led.off();
delay(1000);
}

Заключение

В этом уроке мы написали простейшую библиотеку на основе нашего класса led. Теперь мы сможем организовать код для проектов с использованием концепции объектно-ориентированного программирования. И уже в следующем уроке попробуем написать новую библиотеку для генератора кода морзе на Ардуино.

Где купить