Привет! В прошлый раз мы начали знакомство с объектно-ориентированным программированием для Ардуино. В этой теме можно написать много статей и уроков. Мы будем постепенно раскрывать эту область программирования. А сегодня посмотрим, что такое библиотека для программы на Ардуино и оформим класс 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. Теперь мы сможем организовать код для проектов с использованием концепции объектно-ориентированного программирования. И уже в следующем уроке попробуем написать новую библиотеку для генератора кода морзе на Ардуино.