Amateur Radio Station R9AL

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

      Библиотеки Arduino - это части программы для выполнения конкретных задач. С помощью библиотек можно выполнять сложные действия всего парой строк кода, потому что эта часть кода уже была написана ранее, вами или кем-то еще. использование библиотек облегчает подключение к датчикам, дисплеям, модулям и т.д. Например, встроенная библиотека LiquidCrystal позволяет легко работать с символьными ЖК-дисплеями. Есть сотни дополнительных библиотек, доступных в интернете для скачивания. Чтобы использовать дополнительные библиотеки, нужно будет их установить.

      В Tinkercad уже установлен набор библиотек:

К сожалению, нет возможности добавить в Tinkercad новые библиотеки или писать свои. Поэтому, рассмотрим как работать с библиотеками в Arduino IDE.

Установка библиотеки

Использование диспетчера библиотек.

Чтобы установить новую библиотеку в Arduino IDE, вы можете использовать менеджер библиотек (доступно начиная с версии 1.8.0). Откройте IDE и перейдите в меню "Скетч", а затем включите "Подключить библиотеку" -> "Управление библиотеками".



Затем откроется менеджер библиотек, и вы найдете список библиотек, которые уже установлены или готовы к установке. В этом примере мы установим Audio библиотеку. Прокрутите список, чтобы найти её, затем выберите версию библиотеки, которую вы хотите установить. Иногда доступна только одна версия библиотеки.



Нажмите "Установить" и подождите, пока IDE установит новую библиотеку.



Загрузка может занять некоторое время в зависимости от скорости вашего соединения. Как только загрузка закончится, это закончилось, рядом с библиотекой Audio должен появиться тег INSTALLED.



Теперь можете закрыть менеджер библиотек.

Теперь вы можете найти новую библиотеку, в меню "Подключить библиотеку".

Импорт библиотеки .zip

Библиотеки часто распространяются в виде ZIP-файла или папки. Название папки является Наименованием библиотеки. Внутри папки будет файл .cpp, файл .h и часто Файл Keywords.txt, папка примеров и другие файлы, необходимые для библиотеки. Начиная с версии 1.0.5 вы можете устанавливать сторонние библиотеки в IDE. Можно не разархивировать библиотеку, оставить как есть. В Arduino IDE выберите "Скетч" -> "Подключить библиотеку". В верхней части, в раскрывающемся списке выберите параметр "Добавить .ZIP-библиотеку".



Вам будет предложено выбрать библиотеку, которую вы хотите добавить. Перейдите к нужному .zip-файлу и откройте его.



Вернитесь в меню "Скетч" -> "Подключить библиотеку". Теперь вы должны увидеть библиотеку внизу выпадающего меню. Она готова к использованию в вашем скетче. Файл библиотеки будет развернут в папке библиотеки в вашем каталоге скетчей Arduino.

Примечание: библиотека будет доступна для использования в скетчах, но примеры для библиотеки не будет отображаться в "Файл" -> "Примеры" до перезапуска IDE.

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

Ручная установка

Чтобы установить библиотеку, сначала закройте приложение Arduino. Затем распакуйте ZIP-файл, содержащий библиотеку. Например, если вы устанавливаете библиотеку с именем "ArduinoParty", разархивируйте ArduinoParty.zip. Он должен содержать папку, которая называется ArduinoParty, с файлами внутри ArduinoParty.cpp и ArduinoParty.h. (Если Файлы .cpp и .h не находятся в папке, вам нужно их создать. В этом случае вы создайте папку с именем "ArduinoParty" и перемещаете в нее все файлы, которые были в ZIP-файле, такие как ArduinoParty.cpp и ArduinoParty.h.)

Перетащите папку ArduinoParty в вашу папку скетчей Arduino. Под Windows, скорее всего, эта папка будет в "Мои документы/Arduino/library". Для пользователей Mac, скорее всего, он будет называться "Documents/Arduino/library". В Linux это будет папка "library" в вашем альбоме.

Ваша папка библиотеки Arduino теперь должна выглядеть так (в Windows):
C:/Program Files/Arduino/libraries/ArduinoParty/ArduinoParty.cpp
C:/Program Files/Arduino/libraries/ArduinoParty/ArduinoParty.h
C:/Program Files/Arduino/libraries/ArduinoParty/keywords.txt


на Mac и Linux:
Documents/Arduino/libraries/ArduinoParty/ArduinoParty.cpp
Documents/Arduino/libraries/ArduinoParty/ArduinoParty.h
Documents/Arduino/libraries/ArduinoParty/keywords.txt


Может быть больше файлов, чем просто .cpp и .h, просто убедитесь, что они все там. (Библиотека не будет работать, если вы поместите файлы .cpp и .h прямо в папка библиотеки или если они вложены в дополнительную папку. Например: "Документы/Arduino/library/ArduinoParty.cpp" и "Документы/Arduino/library/ArduinoParty/ArduinoParty/ArduinoParty.cpp не будут работать.)

Перезапустите приложение Arduino. Убедитесь, что новая библиотека появляется в "Скетч" -> "Подключить библиотеку". Всё!

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

В качестве примера рассмотрим программу, которая генерирует сигнал SOS кодом Морзе.

Азбука Морзе названа в честь американского изобретателя и художника Сэмюэля Морзе. В азбуке Морзе буква или любой другой символ, кодируется уникальной комбинацией длинных и коротких тональных посылок, точек и тире. За единицу времени принимается длительность одной точки. Длительность тире равна трём точкам. Пауза между элементами одного знака - одна точка, между знаками в слове - 3 точки, между словами - 7 точек.

Чтобы посмотреть как работает программа, нужно подключить пьезоизлучатель к Arduino, согласно схеме:



Можно собрать эту схему в Tinkercad и посмотреть как она работает, загрузив в нее следующий код:
int d=100;
int pin=13;

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {

  tone(pin, 1000, d);
  delay(2*d);
  tone(pin, 1000, d);
  delay(2*d);
  tone(pin, 1000, d);
  delay(4*d);

  tone(pin, 1000, 3*d);
  delay(4*d);
  tone(pin, 1000, 3*d);
  delay(4*d);
  tone(pin, 1000, 3*d);
  delay(6*d);

  tone(pin, 1000, d);
  delay(2*d);
  tone(pin, 1000, d);
  delay(2*d);
  tone(pin, 1000, d);
  delay(4*d);

  delay(7*d);
}
Даже для токого простого трехбуквенного сообщения программа довольно громоздкая. А если нужно передать сообщение из нескольких десятков или сотен символов?

Вот тут как раз и может помочь библиотека. Назовем нашу библиотеку: Morse

Чтобы создать библиотеку, нужно создать всего три файла:
C:/Program Files/Arduino/libraries/ArduinoParty/Morse.h
C:/Program Files/Arduino/libraries/ArduinoParty/Morse.cpp
C:/Program Files/Arduino/libraries/ArduinoParty/keywords.txt

Файл Morse.h

Это заголовочный файл содержит класс, где объявляются функции, которые будут использоваться в скетче (в нашем случае это MorseS и MorseO, но на самом деле мы можем добавить весь алфавит и любые другие знаки, используемые в азбуке Морзе) и используемые переменные.
/*
здесь размещают информацию о разработчике и инструкцию для пользователя
*/

#include "Arduino.h" //  включение стандартных функций Ардуино
void MorseS(int pin, int d);  // функция генерирующая букву S
void MorseO(int pin, int d);  // функция генерирующая букву O


Файл Morse.cpp

Файл реализации содержит основной код библиотеки. В нашем примере в программе используются две переменные, которые следует указывать в скетче: pin - номер порта, d - длительность точки в миллисекундах.
/*
здесь размещают информацию о разработчике и инструкцию для пользователя
*/

#include "Arduino.h" //  включение стандартных функций Ардуино и заголовочного файла
#include "Morse.h"

void MorseS(int pin, int d) {
  tone(pin, 1000, d);
  delay(2*d);
  tone(pin, 1000, d);
  delay(2*d);
  tone(pin, 1000, d);
  delay(4*d);
}

void MorseO(int pin, int d) {
  tone(pin, 1000, 3*d);
  delay(4*d);
  tone(pin, 1000, 3*d);
  delay(4*d);
  tone(pin, 1000, 3*d);
  delay(6*d);
}



Файл keywords.txt

В файле указывается подсветка синтаксиса в Arduino IDE. Функция KEYWORD1 окрашивает слово в оранжевый цвет, LITERAL1 окрашивает слово в синий цвет.
Morse	KEYWORD1
MorseS	KEYWORD1
MorseO	KEYWORD1


Теперь, когда библиотека написана, можем переписать исходный код программы, но теперь уже с использованием этой библиотеки. Используем новые команды MorseS и MorseO.
#include < Morse.h>

int pin=13;
int d=100;

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  MorseS(pin, d); // pin - номер порта, d - длительность точки
  MorseO(pin, d);
  MorseS(pin, d);
  delay(7*d);
}


Как видно, программа стала значительно короче и проще.







Copyright © R9AL 2021 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования