Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

latest PIO Foo Foo Foo

Foo

GyverBeeper

Генерация писка по таймеру

  • Простыми словами: библиотека позволяет асинхронно пикнуть зуммером несколько раз
  • Асинхронная работа
  • Программный асинхронный писк на базе micros() или tone() по выбору
  • Установка активного и пассивного времени
  • Встроенная PROGMEM таблица на 96 нот (NOTE_C1..NOTE_B8)

Зависимости

Совместимость

Все Arduino

Содержание

Использование

// конструктор
Beeper();
Beeper(uint8_t pin);

// методы
// пищать с указанным периодом (мкс, или нота с префиксом US_)
void beepUs(uint16_t us);

// пискнуть с периодом us (мкс, или нота с префиксом US_) amount раз, активное время high, тишина low
void beepUs(uint16_t us, uint8_t amount, uint16_t high, uint16_t low = 0);

// пищать с частотой в Гц
void beep(uint16_t freq);

// пискнуть с частотой в Гц amount раз, активное время high, тишина low
void beep(uint16_t freq, uint8_t amount, uint16_t high, uint16_t low = 0);

// пищать с нотой (префикс NOTE_)
void beepNote(uint8_t note);

// пискнуть нотой amount раз, активное время high, тишина low
void beepNote(uint8_t note, uint8_t amount, uint16_t high, uint16_t low = 0);

// пискнуть с периодом us (мкс, или нота с префиксом US_), активное время high, тишина low
void beepUsForever(uint16_t us, uint16_t high, uint16_t low = 0);

// пискнуть с частотой в Гц, активное время high, тишина low
void beepForever(uint16_t freq, uint16_t high, uint16_t low = 0);

// пискнуть нотой, активное время high, тишина low
void beepNoteForever(uint8_t note, uint16_t high, uint16_t low = 0);

bool tick();            // тикер, вызывать в loop. Вернёт true если пищание активно
void stop();            // остановить работу
void useTone(bool f);   // использовать реализацию tone вместо ручного таймера (умолч. false)

// true - синхронный режим (блокирующее пищание) для не-tone
void syncMode(bool f);

// наследует из Blinker:
void init(uint8_t pin); // указать пин
void invert(bool inv);  // инвертировать выход
void force();           // спровоцировать вызов ready
bool ready();           // однократно вернёт true, когда пикание закончится
bool running();         // возвращает true, пока система пикает
bool state();           // статус выхода (идёт генерация писка)
uint16_t getLeft();     // получить остаток до следующего переключения в мс
uint8_t getLeft8();     // получить остаток до следующего переключения в диапазоне 0-255

Количество конечных сигналов задаётся в диапазоне 0..254. Значение 255 зарезервировано как внутренний признак бесконечного режима и используется методами beepUsForever(), beepForever() и beepNoteForever(). Нулевая частота, нулевой период и номер ноты вне 0..95 останавливают генератор. Переключение useTone() также останавливает текущее звучание.

Пример

Просто пикнуть

#include <Beeper.h>
Beeper buz(13);

void setup() {
  // пикнуть нотой NOTE_G1 3 раза, 500мс вкл, 300мс выкл
  buz.beepNote(NOTE_G1, 3, 500, 300);
}
void loop() {
  buz.tick();
}

Играть три ноты

#include <Beeper.h>
Beeper buz(13);
uint8_t notes[] = {NOTE_F4, NOTE_AS1, NOTE_F3};
uint8_t curNote = 0;

void start() {
  curNote = 0;
  buz.force();  // спровоцировать ready
}

void setup() {
  start();
}
void loop() {
  buz.tick();

  // переключить ноту
  if (buz.ready()) {
    if (curNote < 3) {
      buz.beepNote(notes[curNote], 1, 500, 500);
      curNote++;
    }
  }
}

Версии

  • v1.0
  • v1.1.0 - ноты переделаны под американскую научную нотацию. Добавлен синхронный режим

Установка

  • Для работы требуется библиотека GyverBlinker
  • Библиотеку можно найти по названию GyverBeeper и установить через менеджер библиотек в:
    • Arduino IDE
    • Arduino IDE v2
    • PlatformIO
  • Скачать библиотеку .zip архивом для ручной установки:
    • Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
    • Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
    • Распаковать и положить в Документы/Arduino/libraries/
    • (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
  • Читай более подробную инструкцию по установке библиотек здесь

Обновление

  • Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
  • Через менеджер библиотек IDE: найти библиотеку как при установке и нажать "Обновить"
  • Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request'ов!

При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:

  • Версия библиотеки
  • Какой используется МК
  • Версия SDK (для ESP)
  • Версия Arduino IDE
  • Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
  • Какой код загружался, какая работа от него ожидалась и как он работает в реальности
  • В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код

About

Библиотека для генерации писка по таймеру

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages