Подборка библиотек для Arduino

Вы уже знаете, что комьюнити Ардуино очень большое и ежедневно растёт. За время своего существования оно родило огромное количество библиотек. Я решил составить список самых необычных, интересных и полезных, ссылки ведут на гитхаб или сайт разработчика. Полного набора специализированных библиотек для работы с модулями и шилдами здесь нет! Ищутся в гугле по названию чипа, здесь я оставлял только универсальные. Библиотеки, помеченные как стандартные, скачивать не нужно!

Список составлен для библиотек, подходящих для UNO, NANO, MEGA, то есть тут нет мощных библиотек для DUE и ZERO подобных плат. Источники:

Время, таймеры


  • Time – счётчик времени для Ардуино, считает часы-минуты-месяцы и всё такое. Описание
  • RTCTimer – таймер для работы в паре с RTC модулем
  • Chrono – библиотека “таймера с millis()” для эффективного построения логики своего кода
  • elapsedMillis – ещё один очень лёгкий и простой таймер с millis()
  • GyverTimer – моя версия таймера с миллис, рекомендую! Удобнее предыдущих
  • TimerOne – библиотека для удобного ручного контроля за Таймером 1 (прерывания, ШИМ, и.т.д.)
  • MsTimer2 – библиотека для удобного ручного контроля за Таймером 2. Есть версия FlexiTimer2, которая чем-то лучше. Используйте её.
  • TimerThree – библиотека для удобного ручного контроля за Таймером 3
  • TimeLord – библиотека, позволяющая узнать время восхода/заката Солнца и Луны, лунные фазы, звёздное время и проч. на основе географического положения

Коммуникация, интерфейсы


  • Firmata – стандартная библиотека для общения с компьютером по протоколу Firmata. Описание
  • SoftwareSerial – стандартная библиотека для создания TTL Serial на любых двух пинах, позволяет создать дополнительный порт для общения с Bluetooth/GPS/GSM и прочими модулями с Serial коммуникацией.
  • AltSoftSerial – самая лучшая версия софтварного Serial, использует системный таймер
  • SerialCommand – лёгкая библиотека для общения через порт при помощи команд
  • CmdMessenger – мощная библиотека для общения через Serial порт, со своим парсером и кучей приколюх. Описание
  • EasyTransfer – библиотека для общения двух Ардуинок через последовательный порт
  • Streaming – вывод в порт “в стиле C++” при помощи оператора <<
  • OneWire – библиотека для общения по протоколу one wire, например с датчиками температуры DHT18b20. Ардуино может быть “slave” для общения, читать тут
  • SerialControl – набор примеров для управления состояниями пинов при помощи Serial команд. Описание
  • MiniPirate – более мощная версия SerialControl, позволяет командами в порт крутить серво, сканировать i2c и многое другое!
  • MIDI_library – библиотека для работы с музыкальными устройствами по протоколу MIDI (через Serial, подходит любая Ардуина)
  • MIDI – MIDI библиотека от великого PaulStoffregen (через Serial, подходит любая Ардуина)
  • arcore – ещё одна библиотека для MIDI (USB-MIDI, только для Леонардо/Микро)
  • MIDIUSB – ещё одна библиотека для MIDI (USB-MIDI, только для Леонардо/Микро)
  • HIDUINO – набор инструментов для создания USB MIDI устройства
  • HID – очень мощная библиотека для создания HID устройств (мыши, клавиатуры, геймпады и другие USB контроллеры)
  • ArduinoJoystickLibrary – ещё одна библиотека для создания полноценного HID геймпада на Leonardo/Micro (ATmega32U4)
  • CPPM – библиотека для организации связи по протоколу CPPM (например RC приёмник Orange R615X)
  • PPMEncoder – раскодирование и генерация PPM сигнала для RC моделей
  • TVout – библиотека для вывода графики на экран телевизора через вход AV. Описание
  • X10 – библиотека для общения по протоколу X10 по линии питания 220V. Описание тут

Некоторое железо


  • AccelStepper – более интересная и качественная замена стандартной библиотеке Stepper для контроля шаговых моторчиков. Скачать можно со страницы разработчика, или вот прямая ссылка на архив.
  • ServoSmoothмоё дополнение к стандартной библиотеке Servo, позволяющее управлять сервоприводом с настройкой максимальной скорости движения и разгона/торможения (как в AccelStepper, только для серво). Must have любого любителя серво манипуляторов!
  • CapacitiveSensor – библиотека для создания сенсорных кнопок (из пары компонентов рассыпухи). Описание
  • ADCTouchSensor – ещё одна версия библиотеки для создания сенсорных кнопок. Есть ещё одна, так, на всякий случай
  • TouchWheel – библиотека для создания сенсорных слайдеров и колец
  • Buzz – детектор присутствия на основе всего лишь одного провода! (измеряет ЭМ волны)
  • Bounce – библиотека антидребезга для кнопок и всего такого. Сомнительная полезность, но почитайте описание
  • oneButton – библиотека для расширенной работы с кнопкой. На мой взгляд неудобная
  • GyverButton – моя библиотека для расширенной работы с кнопкой. Очень много возможностей!
  • AdaEncoder – библиотека для работы с энкодерами
  • GyverEncoder – моя библиотека для энкодеров с кучей возможностей, поддерживает разные типы энкодеров
  • RTCLib – лёгкая библиотека, поддерживающая большинство RTC модулей
  • OV7670 – библиотека для работы с камерой на OV7670
  • IRremote – базовая библиотека для работы с ИК пультами и излучателями
  • IRLib – более расширенная версия для работы с ИК устройствами
  • IRLremote – самая чёткая библиотека для ИК пультов, работает через прерывания. 100% отработка пульта
  • keySweeper – почти готовый проект для перехвата нажатий с беспроводных клавиатур
  • USB_Host_Shield – позволяет Ардуине работать с геймпадами (PS, XBOX) и другими USB устройствами
  • Brain – библиотека для работы с NeuroSky ЭЭГ модулями
  • TinyGPS – шустрая библиотека для работы с GPS модулями
  • GyverRGB – моя библиотека для работы с RGB светодиодами и лентами
  • FadeLED – библиотека для плавного (ШИМ) мигания светодиодами с разными периодами
  • CurrentTransformer – измерение силы тока при помощи трансформатора (катушки) на проводе. Читай: токовые клещи
  • LiquidCrystal-I2C – библиотека для LCD дисплеев с I2C контроллером. Разработчик – fdebrabander
  • LiquidCrystal-I2C – библиотека для LCD дисплеев с I2C контроллером. Разработчик – johnrickman. Предыдущая вроде бы лучше
  • LiquidTWI2быстрая библиотека для LCD дисплеев на контроллерах MCP23008 или MCP23017
  • LCD_1602_RUS – библиотека русского шрифта для LCD дисплеев
  • u8glib – библиотека для работы с монохромными LCD и OLED дисплеями
  • ucglib – библиотека для работы с цветными LCD и OLED дисплеями
  • Adafruit_SSD1306 – ещё одна библиотека для OLED дисплеев
  • Adafruit-GFX-Library – дополнение для adafruit библиотек дисплеев, позволяет выводить графику
  • SSD1306Ascii – самодостаточная и очень лёгкая библиотека для вывода текста на OLEDы
  • NeoPixelBus – библиотека для работы с адресной светодиодной лентой, адаптированная под esp8266 (NodeMCU, Wemos и др.). 

Работа с данными, фильтры


  • FFT – быстрое преобразование Фурье (раскладывание звука в спектр)
  • fix_FFT – говорят пофикшенная библиотека FFT
  • FHT – быстрое преобразование Хартли (как Фурье, только ещё быстрее)
  • GyverFilters – несколько очень эффективных фильтров данных (бегущее среднее, медиана, упрощённый одномерный Калман, AB фильтр
  • TinyEKF – быстрый облегчённый вариант фильтра Калмана
  • filtering-library – несколько фильтров данных
  • Gaussian – фильтр Гаусса
  • aJson – работа с данными в формате JSON. Есть ещё Arduino JSON библиотека, и парсер потока JSON данных
  • PID – самая известная библиотека ПИД регулятора. Для неё есть дополнение – автонастройка (автотюн) параметров регулятора
  • GyverPID – моя версия PID регулятора, на мой взгляд более компактная и удобная в использовании
  • GyverRelay – библиотека релейного регулятора с гистерезисом и обратной связью по производной
  • CryptoSuite – несколько примеров шифрования данных известными шифрами
  • AESlib – библиотека для работы с AES шифрованием
  • LinkedList – работа с типом данных “связанный список”, читайте на Хабре
  • FixedPointsArduino – работа с типом данных “с фиксированной точкой” (десятичные дроби, но быстрее вычисляются)

Системные штуки

Работа с памятью


  • EEPROM – стандартная библиотека для работы с EEPROM. Рекомендую использовать более удобную EEPROMex
  • EEPROMex – более удобная библиотека для работы с EEPROM памятью. Описание
  • EEPROMWearLevel – “менеджер” EEPROM памяти, следит за количеством перезаписи ячеек
  • MemoryFree – библиотека для изучения текущей занятости SRAM памяти. Описание
  • EEWrap – библиотека позволяет использовать EEPROM как оперативную память (SRAM), т.е. для хранения переменных
  • Flash – библиотека позволяет удобно хранить/читать любые данные во Flash памяти микроконтроллера (массивы, строки с текстом…)
  • PGMWrap – ещё одна мощная библиотека для записи/чтения данных во Flash память
  • optiboot_flash – модифицированный загрузчик OptiBoot, в который добавлена возможность работать с Flash памятью во время выполнения кода (считай расширение SRAM за счёт Flash!)

Работа с пинами


  • DirectIO – более быстрая альтернатива стандартных функций чтения/записи состояния пина
  • AnalogReadFast – быстрый вариант чтения аналогового пина (21 мкс)
  • CyberLib – крутой сборник быстрых макросов-аналогов функциям Ардуино. Читайте описание
  • GyverHacks – сборник быстрых аналогов функций Ардуино, не таких быстрых, как у CyberLib, но более привычный в использовании. Изменение частоты/разрядности ШИМ
  • SoftPWM – делаем софтверный ШИМ на разных пинах
  • PWM – библиотека, позволяющая задавать частоту ШИМ
  • PinChangeInt – делаем прерывания на любом пине. Как так? Есть описание
  • PinChangeInterrupt – ещё одна библиотека, позволяющая ловить прерывания на любом пине
  • analogComp – работа с аналоговым компаратором микроконтроллера

Глубинные настройки


  • GyverHacks – помимо описанного выше, тут есть некоторые глубинные настройки, измерение опорного напряжения и температуры ядра
  • Low-Power – мощная библиотека для управления энергосбережением и спящим режимом
  • SoftwareReset – доступ к перезагрузке Ардуино “из скетча”
  • WatchDog – библиотека для работы со “сторожевым псом”, перезагружающим МК в случае зависания. Ещё вариант
  • Adafruit-Trinket-USB – библиотека эмуляции USB для ATtiny85 (плата Digispark). Имитирует клавиатуру/мышь
  • TrinketHidCombo_MEGA328 – библиотека эмуляции USB для ATmega328 (платы UNO/Nano/Pro Mini). Имитирует клавиатуру/мышь. Пример есть на форуме. Оригинальный пост на форуме. Скачать с FTP сайта. Скачать с облака Mail. Скачать с Яндекс Диска.

Ядра и загрузчики


  • optiBoot – крутой загрузчик для Ардуино, более быстрый, лёгкий и функциональный
  • HoodLoader – загрузчик для МК 16u2 с поддержкой HID (читай: превращает оригинальную UNO в аналог Leonardo с поддержкой HID)
  • MiniCore – ядро для поддержки микроконтроллеров ATmega328, ATmega168, ATmega88, ATmega48 и ATmega8, основано на optiBoot. Одна из основных фишек – поддержка внутреннего тактового генератора!
  • MicroCore – ядро для поддержки микроконтроллеров ATtiny13, ATtiny13A and ATtiny13V с выбором частоты внутреннего тактового генератора
  • ATTinyCore – ядро для поддержки микроконтроллеров ATtiny 441/841, 44/84, 45/85, 461/861, 48/88, 828, 1634, 87, 167, опять же на базе крутого OptiBoot.

Менеджеры задач и потоков


  • ArduinoThread – библиотека для создания “потоков” – отдельно выполняемых задач по таймеру или как-то ещё
  • EventManager – библиотека для работы с событиями (опять-же таймер-вашего-кода)
  • Arduino-fsm – ещё один менеджер задач, позволяющий писать чёткий понятный код с кучей задач, выполняющихся по таймеру
  • Automaton – ещё один фреймворк для написания скетчей с задачами и таймерами. Есть вики
  • FreeRTOS – операционная система реального времени для Ардуино. Задачи, потоки…
  • Arduino_FreeRTOS – ещё одна версия RTOS
  • GyverRTOS – моя простенькая RTOS с режимом сна (на основе библиотеки Low-Power)
  • DeepSleepScheduler – менеджер задач со встроенным режимом сна

Звук и речь


  • Talkie – библиотека синтеза звука речи для создания говорящих девайсов
  • Mozzi – большая библиотека для генерации различных звуков
  • uSpeech – библиотека распознавания речи
  • TMRpcm – библиотека для воспроизведения звуковых файлов .WAV с карты памяти
  • toneAC – более продвинутая версия стандартной tone() для генерации звуковой частоты. Скачать сами файлы можно тут
  • DFPlayer – библиотека для работы с MP3 модулем DFPlayer mini
  • WTV020SD16P – работа со звуковым модулем WTV020SD16P

Разное


  • menusystem – мощный инструмент для создания меню с кучей примеров
  • LCD_Menu – готовый инструмент для создания меню на LCD Дисплеях
  • LiquidMenu – ещё один фреймворк для создания меню на LCD
  • MENWIZ – ещё один готовый вариант меню для LCD
  • MicroDebug – библиотека для удобной отладки кода
  • hoverboard-hack – немного не в тему, но это инструкция по хакингу платы ховерборда для использования её в своих целях

Важные страницы


  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
Список библиотек Arduino
4.8 (95.79%) 19 vote[s]
Последнее обновление Июль 17, 2019
2019-07-17T19:16:09+03:00