Site Loader

Список библиотек Arduino

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

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

avr-libs


В состав компилятора Arduino IDE входит набор стандартных библиотек под микроконтроллеры AVR (т.н. toolchain – набор инструментов), их можно просто подключить и использовать их возможности. Полный список и документация на все либы находится здесь. Тут перечислю самые полезные и интересные (название будет ссылкой на документацию):

  • math.h – библиотека с кучей математических функций. Подключена по умолчанию
  • time.h – библиотека для работы с временем. Счёт, конвертация, временные зоны и прочее
  • avr/eeprom.h – родная библиотека для работы с EEPROM. Подробно разбирали в этом уроке
  • avr/power.h – библиотека управления потреблением МК: делитель системной частоты и включение/выключение периферии
  • avr/sleep.h – библиотека для управления режимом энергопотребления МК
  • avr/wdt.h – управление сторожевым таймером
  • util/delay.h – библиотека с задержками на базе тактов процессора (работает без таймера 0)

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


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

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


  • GyverBus – общение по протоколу GBUS. Двухсторонняя связь сети Ардуинок по одному проводу. Описание
  • Firmata – стандартная библиотека для общения с компьютером по протоколу Firmata. Описание
  • SoftwareSerial – стандартная библиотека для создания TTL Serial на любых двух пинах, позволяет создать дополнительный порт для общения с Bluetooth/GPS/GSM и прочими модулями с Serial коммуникацией.
  • AltSoftSerial – самая лучшая версия софтварного Serial, использует системный таймер
  • SerialCommand – лёгкая библиотека для общения через порт при помощи команд
  • CmdMessenger – мощная библиотека для общения через Serial порт, со своим парсером и кучей приколюх. Описание
  • EasyTransfer – библиотека для общения двух Ардуинок через последовательный порт
  • Streaming – вывод в порт “в стиле C++” при помощи оператора <<
  • OneWire – библиотека для общения по протоколу one wire, например с датчиками температуры DS18b20. Ардуино может быть “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 моделей
  • PWMread – статья + библиотека для чтения PWM сигнала с приёмников RC моделей
  • TVout – библиотека для вывода графики на экран телевизора через вход AV. Описание
  • X10 – библиотека для общения по протоколу X10 по линии питания 220V. Описание тут
  • NicoHoodProtocol – универсальный протокол связи по проводу

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


  • GyverStepper – высокопроизводительная библиотека для управления шаговым мотором
  • AccelStepper – более интересная и качественная замена стандартной библиотеке Stepper для контроля шаговых моторчиков. Скачать можно со страницы разработчика, или вот прямая ссылка на архив.
  • AccelMotor – моя библиотека для управления мотором с энкодером (превращает обычный мотор в “шаговый” или сервомотор)
  • 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 дисплеев
  • LCD_1602_RUS_ALL – новая версия предыдущей библиотеки с поддержкой украинского языка
  • u8glib – библиотека для работы с монохромными LCD и OLED дисплеями
  • ucglib – библиотека для работы с цветными LCD и OLED дисплеями
  • Adafruit_SSD1306 – ещё одна библиотека для OLED дисплеев
  • Adafruit-GFX-Library – дополнение для adafruit библиотек дисплеев, позволяет выводить графику
  • SSD1306Ascii – самодостаточная и очень лёгкая библиотека для вывода текста на OLEDы
  • NeoPixelBus – библиотека для работы с адресной светодиодной лентой, адаптированная под esp8266 (NodeMCU, Wemos и др.).
  • microLED – лёгкая и простая библиотека для работы с адресной лентой
  • Gyver433 – лёгкая библиотека для отправки любых данных через радио модули 433 МГц
  • rc-switch – библиотека для работы с радио модулями 433 МГц и разными протоколами связи

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


  • 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 – библиотека, позволяющая задавать частоту ШИМ
  • GyverPWM – мощная библиотека для расширенной генерации ШИМ (только для ATmega328)
  • PinChangeInt – делаем прерывания на любом пине. Как так? Есть описание
  • PinChangeInterrupt – ещё одна библиотека (лучше), позволяющая ловить прерывания на любом пине
  • analogComp – работа с аналоговым компаратором микроконтроллера

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


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

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


  • megaTinyCore – мой вариант ядра для плат с ATmega168/328 на борту (UNO, Nano, Mini), основан на оригинальном ядре Arduino, стандартные функции многократно ускорены и облегчены. Рекомендуется для тяжёлых и требовательных к скорости проектов.
  • optiBoot – крутой загрузчик для Ардуино, более быстрый, лёгкий и функциональный
  • HoodLoader – загрузчик для МК 16u2 с поддержкой HID (читай: превращает оригинальную UNO в аналог Leonardo с поддержкой HID)
  • ArduinoXInput_AVR – ядро для плат на базе ATmega32U4 (Leonardo, Micro), превращающее плату в контроллер с поддержкой XInput (геймпад от Xbox). Для создания игрового контроллера также понадобится библиотека ArduinoXInput. Есть гайд на английском
  • GyverCore – лёгкое и быстрое ядро для ATmega328 (Arduino NANO), которое разработали мы с коллегой. Лёгкое и быстрое, возможность работы без загрузчика и широкий выбор вариантов тактирования и вообще системных настроек.
  • 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.
  • megaTinyCore – ядро для поддержки микроконтроллеров ATtiny 3217, 1617, 817, 417, 3216, 1616, 816, 416, 1614, 814, 414, 214, 412, 212, 1607, 807, 1606, 806, 406, 1604, 804, 404, 204, 402, 202. Новые модели шьются по UPDI, по этой теме читайте отличную статью на русском языке.
  • nanoBoot – лёгкий (512 байт) загрузчик для ATmega32xx4 с поддержкой HID

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


  • 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 – немного не в тему, но это инструкция по хакингу платы ховерборда для использования её в своих целях

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


  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

5 / 5 ( 13 голосов )

Простой генератор прямоугольных импульсов на Arduino: схема и программа

#include <TimerOne.h>

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// RS,E,D4,D5,D6,D7 (контакты, к которым подключен ЖК дисплей)

unsigned long t=1000,f,k=512;// по умолчанию период равен 1000 μs (1000 Hz), меандр, длительность импульса равна скважности k = 512 (50%)

byte k1,kn,kn1,kn2;

int drive,drive0;

 

void setup()

{

  lcd.begin(16, 2);// LCD 16X2

  pinMode(9, OUTPUT);

  pinMode(6,INPUT);// button at input 6

  pinMode(7,INPUT);// button at input 7

  pinMode(13,INPUT);// button at input 13

}

void loop()

{

  Timer1.initialize(t); // period    

  Timer1.pwm(9, k); // k — fill factor 0-1023 (скважность, коэффициент заполнения)

  kn=digitalRead(6);// button input 6 (- pulse period) (уменьшить период)

  kn1=digitalRead(7);// button input 7 (+ pulse period) (увеличить период)

  kn2=digitalRead(13);// button input 13 (+ circle fill factor) (изменять скважность, по кругу)

 

  if(kn==HIGH){ // уменьшаем период

    drive++;

    if(drive<30){

      t=t-1;  

    }

    // если кнопку удерживать в течение длительного времени, то к коррекции периода импульса будет применяться коэффициент x10 x100 x1000

    else if(drive>30 && drive<60 ){

      t=t-10;

    }

    else if(drive>=60 && drive<100){

      t=t-100;

    }

    else if(drive>=100){

      t=t-1000;

    }

  }

  else{

    drive=0;

  }

 

  if(kn1==HIGH){// увеличиваем период

    drive0++;

    if(drive0<30){

      t=t+1;

      // если кнопку удерживать в течение длительного времени, то к коррекции периода импульса будет применяться коэффициент x10 x100 x1000

    }

    else if(drive0>30 && drive0<60 ){

      t=t+10;

    }

    else if(drive0>=60 && drive0<100){

      t=t+100;

    }

    else if(drive0>=100){

      t=t+1000;

    }

  }

  else{

    drive0=0;

  }

  if(t==0 || t>300000){ //ограничиваем минимальную длительность импульса, если 0 μs или больше чем 300 ms (3.33 Hz), то период делаем равным 1 μs

    t=1;

  }

  if(t>200000 && t<300000){ // ограничиваем максимальную длительность импульса, если больше чем 200 ms, но меньше чем 300 ms (3.33 Hz), то период делаем равным 200 ms (5 Hz)

    t=200000;

  }

  f=1000000/t; // рассчитываем частоту

  k1=k*100/1024; // рассчитываем скважность

 

  if(kn2==HIGH){// кнопка для регулировки скважности (по кругу от 50 до 100%, затем от 0 до 100%)

    k=k+16;// шаг для настройки скважности 16, до 1024 (вы можете сделать шаг 8 для более гладкой настройки)

  }

  if(k==1024){

    k=0;

  }

// отображение информации на ЖК дисплее

  lcd.setCursor(0,0);

  lcd.print(«T=»);

  lcd.print(t);

  lcd.print(» us»);

  lcd.setCursor(12,0);

  lcd.print(k1);

  lcd.print(» %»);

  lcd.setCursor(0,1);

  lcd.print(«F=»);

  lcd.print(f);

  lcd.print(» Hz»);

  delay(300);

  lcd.setCursor(0,0);

  lcd.print(»                «);

  lcd.setCursor(0,1);

  lcd.print(»                «);

}

Крутой дубликатор домофонных ключей на Arduino — МЕХАТРОН DIY

Привет, друзья!
Я запилил копировальщик домофонных ключей на ардуино и сделал пару видосов на своём канале youtube про копирование контактных ключей типа Dallas, токовых ключей Cyfral и Metakom, а также про копирование rfid ключей типа EM-Marine, работающих на частоте 125 кГц. Как раз такие используются в домофонах наших подъездов.

Подробное видео можно посмотреть тут:

Электрическая Схема

Так выглядит схема копировальщика: к ардуино нано подключается луза для копирования контактных ключей, а к ногам 11 и 7 подключается вход и выход rfid модуля.
Rgb-cветодиод для индикации режима чтение/запись/BlueMode, buzzer — для попискивания. Энкодер — для управления дибликатором. На шине i2c подцеплен oled дисплей.

Схема дубликатора Взрослая схема платы дубликатора из онлайн-редактора EasyEda

Корпус и Механическая сборка

Я забацал 3D модель кастомного корпуса для моего дубликатора.

А вот как это напечаталось на 3D принтере. У меня нет принтера, но я нашёл человека через сервис дружественная печать.

Чтобы плата энкодера влезла в корпус ее необходимо немного подпилить напильником с конца, на котором нет дорожек.

Катушку можно взять готовую, например от модуля rdm или купить у китайцев на али на 340 мкГн.
Если будете мотать на спичечный короб — это 59 витков.

Вот как выглядит аппарат в сборе.

Скетч и библиотеки

Ссылка на гитхаб библиотеки и скетч. Библиотеки oled дисплея и oneWireSlave нужно сложить в папочку libraries среды ардуино. Для энкодера я использую библиотеку от Алекса Гайвера. Её нужно распаковать туда же.
Также нужно доустановить библиотеку oneWire и TimerOne из репозитория библиотек ардуино.

Описание работы дубликатора

При запуске копировальщик достаёт из eeprom последний сохранённый туда ключик и показывает на дисплее количество ключей в EEPROM, шифр ключа и его тип. Максимум в дубликатор можно сохранить 20 разных ключей.
Rgb диод светит зелёным, т.е ключ уже можно писать на болванку. Если в EEPROM было пусто, на экране будет соответствующая надпись, в ожидании чтения ключа.
Чтобы выбрать из EEPROM другой ключ , достаточно покрутить энкодер вправо или влево.

Если вы хотите сохранить в EEPROM прочитанный ключ, просто удерживайте нажатым энкодер несколько секунд. Если в EEPROM уже записаны все 20 ключей, то самый старый из них затирается. Если повторно пытаться сохранить в EEPROM ключ, который там уже есть — запись не происходит, а просто выбирается индекс уже сохраненного ключа.

Для перевода в режим записи жмём на кнопку энкодера — светится красный диод. Ключ который отображается на дисплее будет записан на болванку.

Теперь немного про ключи цифрал и метаком.
Для копирования таких ключе нужна спец болванка тм-01а.
Дубликатор умеет делать финализацию таких ключей, и они ничем не будут отличаться от исходных.

Но и это ещё не всё! Я прикинул, а что если сделать эмулятор rfid ключа? У меня есть девайс, который может хранить до 20 разных ключей, в нем есть мозги и рамка, как в обычном ключе. С манчестерским кодом я уже разобрался….
Короче, жмём на кнопку энкодера и переключаемся в третий режим — blueMode. Достаточно поднести дубликатор к домофону и … опа.. дверь открывается! Магия!

Если вам понравился проект — поддержите автора!

Если вам нравится самоделка, но чувствуете, что сил сделать самому пока не достаточно — можете заказать самоделку в авторском исполнении.

  • Дубликатор 3800 руб
  • Комплект для самостоятельной сборки 2900 руб

Доставка в ваш город составляет примерно 280 руб и уже входит в стоимость.

В заказе будет особая авторская прошивка. Вырученные средства пойдут на на закупку материалов для новых проектов, оборудования для съемки, содержание сайта и доменного имени.

Необходимые Материалы

Конденсаторы любые неполярные. Я использовал керамические на 50В.

Полезные ссылки

Библиотека Arduino — TimerOne

#include

const char SET_PERIOD_HEADER = ‘p’;

const char SET_FREQUENCY_HEADER = ‘f’;

const char SET_PULSE_WIDTH_HEADER = ‘ш’;

const char SET_DUTY_CYCLE_HEADER = ‘c’;

#define pwmRegister OCR1A // логический вывод, может быть установлен на OCR1B

const int outPin = 9; // физический пин

long period = 1000; // период в микросекундах

int duty = 512; // коэффициент заполнения в диапазоне от 0 до 1024, 512 — коэффициент заполнения 50%

int prescale [] = {0,1,8,64,256,1024}; // диапазон значений предварительного масштабирования

void setup () {

Serial.begin (9600);

pinMode (outPin, OUTPUT);

Timer1.initialize (период); // инициализируем timer1, 1000 микросекунд

Timer1.pwm (9, duty); // настраиваем ШИМ на выводе 9, рабочий цикл 50%

}

void loop () {

processSerial ();

}

void processSerial () {

static long val = 0;

if (Serial.available ())

{

char ch = Serial.read ();

if (ch> = ‘0’ && ch <= '9') // ch - это число?

{

val = val * 10 + ch — ‘0’; // да, накопить значение

}

иначе if (ch == SET_PERIOD_HEADER)

{

period = val;

Серийный.print («Установка периода на»);

Serial.println (точка);

Timer1.setPeriod (период);

Timer1.setPwmDuty (outPin, duty); // не менять рабочий цикл

show ();

val = 0;

}

else if (ch == SET_FREQUENCY_HEADER)

{

if (val> 0)

{

Serial.print («Установка частоты»);

Serial.println (val);

период = 1000000 / val;

Таймер 1.setPeriod (период);

Timer1.setPwmDuty (outPin, duty); // не менять рабочий цикл

}

show ();

val = 0;

}

else if (ch == SET_PULSE_WIDTH_HEADER)

{

if (setPulseWidth (val)) {

Serial.print («Установка ширины импульса на»);

Serial.println (val);

}

еще

Последовательный.println («Ширина импульса слишком велика для текущего периода»);

показать ();

val = 0;

}

else if (ch == SET_DUTY_CYCLE_HEADER)

{

if (val> 0 && val <100)

{

Serial.print («Установка рабочего цикла на»);

Serial.println (val);

duty = map (val, 1,99, 1, ICR1);

pwmRegister = дежурный;

показать ();

}

val = 0;

}

}

}

bool setPulseWidth (длинные микросекунды) {

bool ret = false;

int prescaleValue = prescale [Timer1.clockSelectBits];

// вычисляем время на тик в нс

long precision = (F_CPU / 128000) * prescaleValue;

период = точность * ICR1 / 1000; // период в микросекундах

if (микросекунды <период)

{

duty = map (микросекунды, 0, период, 0,1024);

если (режим <1)

режим = 1;

if (микросекунды> 0 && duty

{

Timer1.pwm (outPin, долг);

ret = истина;

}

}

возврат возврата;

}

void show () {

Serial.print («Период равен»);

Serial.println (точка);

Serial.print («Рабочий цикл есть»);

// pwmRegister — это ICR1A или ICR1B

Serial.print (map (pwmRegister, 0, ICR1, 1,99));

Serial.println («%»);

Serial.println ();

}

Библиотека TimerOne в Arduino

La libreria TimerOne junto con Arduino nos permite usar Timers y Manera Sencilla, también se puede hacer sin ninguna librería, si bien es un poco más completemosjo, португальский дескриптор данных Que usa nuestra placa de Arduino, si deseas aprender un poco mas puedes ver las interrupciones internas.

Доступен сегмент в документах, содержащих индикаторы, которые работают отдельно с таймером 1, 16 бит и микроконтроллеры ATmega168 / 328 , которые используются и таймер 8 бит данные микроконтроллера и таймеры секций, которые используются в типе Placa de Arduino.

Su instalación es sencilla solo debemos ingresar a nuestro IDE de Arduino y buscar el menu Programa-> Incluir Librería-> Administrar Bibliotecas .

Instalar TimerOne для использования в новых проектах на Arduino.

Лист !!! Ya tenemos instalado nuestra librería.

Описание методов библиотеки TimerOne на Arduino

Antes de empezar a usar estos métodos debemos, include nuestra librería TimerOne con la Instrucción #include , al includes esta librería se crea un objeto llamado .

Timer1.initialize (период опциональный)

La usamos para iniciar la libreria TimerOne , puesto que si no lo hacemos funcionara de forma invalida nuestra librería, en este método Presenta la specificidad de tener la posibilidad de una sobrecarga de unocandialodos de una sobrecarga de unocandialodos, en. un argumentso en nuestro método.

Timer1.serPeriod (periodo)

Con este método podemos asignar un periodo de trabajo para la librería TimerOne , este periodo debe ser declarado en microsegundos, según la documentación de esta librería nos dice que debe estar entrese 1 y 8388480.

Timer1.pwm (pin, duty, periodo [opcinal])

Como sabemos el PWM (Pulse Width Modulation) intenta imitar una señal analógica, la librería TimerOne tiene su propio método para tratar los PWM , este método tes en specific nos que usaremos para sacar esta señal, en el segundo argumento debemos colocar el ciclo del duty, que es de 10 bits ósea que podemos usar valores entre 0 y 1023 , además este método tiene un tercer argumento para colocar el periodo de trabaosjo en microsese pero este argumento es opcional.

Timer1.attachInterrupt (función_ISR, periodo)

Con este método podemos hacer la llamada a una función ISR (Interrupt Service Routines) , que se ejecutara cuando exista un desbordamiento, esta función nos será muy útil para Definir qué queremos que haga en los period queos queues, seyam no sea muy extensiona esta función puesto que de lo contario podría bloquearse el programa, además se Recomienda usar variables «volatile» para gestionar de mejor maneras nuestros valores.

Timer1.setPwmDuty (контакт, нагрузка)

Usado para establecer un nuevo PWM sin la necesidad de reconfigurar nuestro pin en caso que ya hayamos configurado nuestro pin el método PWM (), este método tiene dos argumentos, el primero es para Identificar el pin que vamos a usaro argument, el segundo para el ciclo del duty.

Timer1.detachInterrupt ()

Este método nos ayuda a desactivar las interrupciones en cualquier momento.

Timer1.disablePwm (контакт)

Используется для деактивирования ШИМ-сигнала, который определен передним и освобождает контактный элемент для использования и удаления других параметров для нового проекта.

Timer1.read ()

Este método es muy útil para leer el tiempo transcurrido en microsegundos desde el último rollover.

Como podemos ver Arduino y la enorme comunidad que lo acompaña, aportan mucha información para que mucha gente pueda realizar proyectos complejos sin muchos conocimientos técnicos, pero obviamente es mejor profundizar de la datrolos de est mejor de las placas de Arduino.

Как установить библиотеки Arduino

21.02.2018 | Автор Maker.io Staff

IDE Arduino предоставляет несколько библиотек, которые можно использовать для создания множества проектов, но иногда требуется специализированное оборудование или программное обеспечение. В этом руководстве мы узнаем, как установить дополнительные библиотеки для нашего проекта!

Установить библиотеки Arduino можно тремя способами: вручную установить файлы, импортировать ZIP-файл и использовать диспетчер библиотек.Два из этих методов можно использовать с параметрами меню. Но для ручной установки вам нужно найти файлы библиотеки и поместить их в папку «библиотеки» Arduino.

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

Первый метод, который мы рассмотрим, — это менеджер библиотек, который можно загрузить, перейдя в Sketch> Include Library> Manage Libraries.

Управление библиотеками

После загрузки вы должны увидеть окно, похожее на это:

Отсюда мы можем искать часто используемые библиотеки и автоматически загружать и устанавливать их в среде IDE.В нашем случае мы установим библиотеку ESP8266, чтобы мы могли подключить нашу Arduino к устройству ESP8266. Начните с поиска «ESP8266» в правом верхнем поле. Затем дождитесь появления результатов в окне.

Результаты поиска завершены

Выберите библиотеку и нажмите кнопку «Установить».

Теперь установим библиотеку ESP8266

Во время установки мы должны увидеть, как нижний индикатор выполнения изменяется и отображает такие сообщения, как «Загрузка».

Выполняется установка

После завершения закройте диспетчер библиотек, откройте окно IDE, нажмите «Скетч»> «Включить библиотеку», а затем найдите «Arduino Uno WiFi Dev Ed Library». Выберите эту опцию, и IDE автоматически вставит файл заголовка в наш проект. Вот и все!

Новая библиотека в нашем списке библиотек!

Импорт библиотек ZIP

Библиотеки можно импортировать из файлов ZIP, которые часто можно найти в Интернете.Сначала найдите библиотеку, которую хотите включить. В этом случае я получу библиотеку чтения / записи SD-карты, которую можно найти на GitHub.

https://github.com/arduino-libraries/SD

Сначала загрузите библиотеку в виде ZIP-архива, для чего нажмите зеленую кнопку «Клонировать или загрузить», а затем «Загрузить ZIP».

Загрузка ZIP-файла

После загрузки перейдите в среду разработки Arduino и нажмите «Скетч»> «Включить библиотеку»> «Добавить».zip Библиотека.

Добавление библиотеки ZIP

В открывшемся диалоговом окне файла найдите загруженный ZIP-файл. Для меня этот файл был загружен в… как вы уже догадались…. «Загрузки».

Папка загрузок

После открытия IDE зависает на секунду или две. После этого вы должны получить сообщение «Библиотека добавлена» прямо над окном отладки.

Библиотека добавлена!

Наконец, убедитесь, что установка прошла успешно.Для этого перейдите в Sketch> Include Library и найдите установленную библиотеку.

Ручной путь

Как и в предыдущих шагах, нам сначала нужно найти библиотеку, которую мы хотим установить вручную. В этом примере мы установим звуковую библиотеку Arduino, которую можно найти на GitHub.

https://github.com/arduino-libraries/Audio

Первым шагом является загрузка библиотеки в виде ZIP-архива, для чего нужно щелкнуть зеленую кнопку «Клонировать или загрузить», а затем «Загрузить ZIP».

GitHub Загрузить для звуковой библиотеки Arduino

После загрузки откройте ZIP-файл и в отдельном окне перейдите в папку Arduino. Обычно он находится в папке «Документы», а в моем примере он находится в C: \ Users \ RobinLaptop \ Documents \ Arduino.

Оба окна бок о бок

В папке Arduino откройте папку «Библиотеки» и перетащите папку «Audio-master» в папку библиотек.

Перетащите папку библиотеки в папку библиотеки Arduino

Перезапустите IDE Arduino, а затем проверьте, была ли обнаружена библиотека, перейдя в Sketch> Include Library.

Проверка звуковой библиотеки

Заключение

Установка библиотек в Arduino IDE невероятно проста, а это значит, что расширение ваших проектов должно быть беспроблемным. Многие из этих библиотек также поставляются с примерами и пояснениями, так что у вас не должно возникнуть проблем с их использованием!

Arduino IDE — установить библиотеку TimerOne

В предыдущей статье говорилось об установке библиотеки TimerOne в среде ST3, в этой статье говорилось о том, как установить библиотеку TimerOne в Arduino IDE.


Прежде всего, версия IDE должна быть 1.6.5 и выше, поскольку в более низкой версии нет опции «управление библиотекой», всем нам нравится быть более удобной, чтобы иметь возможность выполнять то, что мы хотим сделать.
Если библиотека TimerOne не была предварительно установлена ​​при загрузке Arduino IDE, вам необходимо импортировать библиотеку самостоятельно или загрузить и установить ее с помощью компилятора, в противном случае возникнут ошибки, такие как не обнаружение файла заголовка при компиляции.
1.6.5 и выше IDE щелкните строку меню Project → Include Library → Manage Libraries... Войдите в интерфейс управления библиотекой
В интерфейсе управления библиотекой сначала будут загружены существующие библиотеки и версии по текущему пути к библиотеке, а затем интерфейс библиотеки ресурсов будет обновлен.
В правом верхнем углу введите TimerOne, который мы ищем, и выполните поиск, вы увидите, что TimerOne появляется в списке, выберите элемент и щелкните на задней панели. Установить Выполнить установку библиотеки TimerOne

В нижней части В интерфейсе будет отображаться индикатор выполнения загрузки библиотеки, показывающий прогресс, потому что библиотека TimerOne довольно мала, и установка завершается в мгновение ока.За этим элементом вы можете увидеть исходную библиотеку TimerOne. Follow Версия 1.1.0 УСТАНОВЛЕНА Указывает, что установлена ​​версия библиотеки TimerOne 1.1.0.
Теперь попробуйте скомпилировать ведущий файл TimerOne.h Программа обнаружила, что будет нет ошибок компиляции, которые не могут найти файл заголовка.


На самом деле IDE младшей версии не означает, что нет возможности добавить библиотеку TimerOne, но перед этим у вас должен быть сжатый пакет библиотеки, которую нужно добавить, а затем вы можете запустить ~
Вот пример версии 1.5.8, нажмите Sketch / Project → Import Library → Add Library Выйдите из пути выбора ZIP-файла (сжатого пакета), найдите соответствующий путь к сжатому пакету библиотеки TimerOne и выберите
Нажмите, чтобы открыть, интерфейс вернется к Интерфейс редактирования IDE, вы можете обнаружить, что библиотека TimerOne была успешно импортирована
Но действительно ли этот способ добавления библиотек эффективен? Давайте попробуем добавить файл заголовка TimerOne.h , скомпилируйте
После завершения компиляции давайте вернемся и посмотрим на меню «Импорт библиотеки».Библиотека TimerOne, добавленная через ZIP-файл, находится в самой маленькой части меню.

alexxlab

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

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