Библиотека. Урок 26. Ардуино

lib cover

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

Где купить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *