Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Библиотеки/Bounce

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Библиотека Bounce[1][2]

Библиотека Bounce служит устранению дребезга контактов на Arduino. Она написана Олле Фредериксом (Ouellet Fredericks) в сотрудничестве с Эриком Лоури (Eric Lowry), Джимом Шимпфом (Jim Schimpf) и Томом Хэркавеем (Tom Harkaway).

Да данный момент вышла уже вторая версия библиотеки – Bounce 2. Цифра «2» в названии указывает, что она не на 100% совместима с первой версией. Библиотека была обновлена алгоритмами и модификациями, предложенными разными пользователями.

Установка и импорт

Скачайте ZIP-файл с библиотекой по этой ссылке. Затем скопируйте распакованную папку с библиотекой по адресу «Документы/Arduino/libraries». Далее, чтобы подключить эту библиотеку к своему скетчу, кликните в IDE Arduino на Скетч > Подключить библиотеку > Bounce2 (Sketch > Include Library > Bounce2). В результате в верхней части скетча появится строчка #include Bounce2.h.

Функции

  • Bounce()
    • Создает экземпляр класса Bounce.
  • void interval(unsigned long interval)
    • Задает время устранения дребезга в миллисекундах.
  • void attach(int pin)
    • Задает контакт и сопоставляет внутреннее состояние с состоянием контакта. Эту функцию следует использовать, когда контакт уже настроен (к примеру, для подтягивающего резистора).
  • bool update()
    • Библиотека Bounce не использует прерывания, поэтому перед считыванием значений с объекта его нужно «обновить», и делать это нужно как можно чаще. То есть ее нужно вызвать в блоке loop(), но не более одного раза. Если состояние контакта поменялось, функция update() обновляет объект и возвращает true («1»), а если нет, то false («2»).
  • bool read()
    • Считывает состояние обновленного контакта.
  • bool fell()
    • Возвращает true, если сигнал контакта переключился с HIGH на LOW.
  • bool rose()
    • Возвращает true, если сигнал контакта переключился с LOW на HIGH.
  • bool risingEdge()
    • Устаревший аналог rose(). Для совместимости с Bounce 1.
  • bool fallingEdge()
    • Устаревший аналог fell(). Для совместимости с Bounce 1.
  • Bounce(uint8_t pin, unsigned long interval_millis)
    • Устарела. Создает экземпляр класса Bounce, подключает контакт и задает интервал для interval_millis. Для совместимости с Bounce 1.

Алгоритмы

Интервал устойчивости. По умолчанию библиотека использует для устранения дребезга именно этот алгоритм. Он проще для понимания и устраняет нежелательный шум.

Stable Interval.jpg

Интервал блокировки. Этот альтернативный метод устранения дребезга активируется, если задать в файле «Bounce.h» строчку

#define BOUNCE_LOCK_OUT

Этот метод гораздо чувствительней, но шума не устраняет.

Lock-out Interval.jpg

Примеры

  • Bounce - Устранение дребезга при нажатии на кнопку (вариант с одной кнопкой)
  • Bounce2Buttons - Устранение дребезга при нажатии на кнопку (вариант с двумя кнопками)
  • Change - Определение перехода из HIGH в LOW
  • Duration - Определение продолжительности нажатия на кнопку
  • Retrigger - Перезапуск события

См.также

Внешние ссылки

  1. playground.arduino.cc - Bounce
  2. github.com - Bounce2/wiki