Мы уже сталкивались с библиотеками (например, когда подключали матричную клавиатуру), настало время познакомиться с ними поближе.
Библиотеки Arduino - это части программы для выполнения конкретных задач.
С помощью библиотек можно выполнять сложные действия всего парой строк кода,
потому что эта часть кода уже была написана ранее, вами или кем-то еще.
использование библиотек облегчает подключение к датчикам, дисплеям, модулям и
т.д. Например, встроенная библиотека LiquidCrystal позволяет легко работать с
символьными ЖК-дисплеями. Есть сотни дополнительных библиотек, доступных в
интернете для скачивания. Чтобы использовать дополнительные библиотеки, нужно
будет их установить.
В Tinkercad уже установлен набор библиотек:
Использование диспетчера библиотек.
Чтобы установить новую библиотеку в Arduino IDE, вы можете использовать
менеджер библиотек (доступно начиная с версии 1.8.0). Откройте IDE и перейдите
в меню "Скетч", а затем включите "Подключить библиотеку" -> "Управление
библиотеками".
Библиотеки часто распространяются в виде ZIP-файла или папки. Название папки
является Наименованием библиотеки. Внутри папки будет файл .cpp, файл .h и
часто Файл Keywords.txt, папка примеров и другие файлы, необходимые для
библиотеки. Начиная с версии 1.0.5 вы можете устанавливать сторонние библиотеки
в IDE. Можно не разархивировать библиотеку, оставить как есть.
В Arduino IDE выберите "Скетч" -> "Подключить библиотеку". В верхней части,
в раскрывающемся списке выберите параметр "Добавить .ZIP-библиотеку".
Чтобы установить библиотеку, сначала закройте приложение 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, согласно схеме:
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);
}
Даже для токого простого трехбуквенного сообщения программа довольно громоздкая.
А если нужно передать сообщение из нескольких десятков или сотен символов?
/* здесь размещают информацию о разработчике и инструкцию для пользователя */ #include "Arduino.h" // включение стандартных функций Ардуино void MorseS(int pin, int d); // функция генерирующая букву S void MorseO(int pin, int d); // функция генерирующая букву O
/*
здесь размещают информацию о разработчике и инструкцию для пользователя
*/
#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);
}
Morse KEYWORD1 MorseS KEYWORD1 MorseO KEYWORD1
#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);
}