کتابخانه متن باز

ARDUniaButton

کتابخانه سبک، سریع و غیرمسدودکننده برای مدیریت کلیدهای فشاری در پروژه های Arduino و سیستم های مبتنی بر میکروکنترلر. ARDUniaButton از تشخیص Press، Release، Click، Double Click، Multi Click، Long Press و Repeat پشتیبانی می کند و امکان استفاده از API مبتنی بر Polling و Callback را فراهم می کند.

معرفی

ARDUniaButton یک کتابخانه سبک و غیرمسدودکننده برای مدیریت کلیدهای فشاری در پروژه های Arduino است.

این کتابخانه با استفاده از millis() رویدادهای مربوط به کلید را بدون استفاده از delay() و بدون توقف اجرای برنامه مدیریت می کند.

کتابخانه توسط Hamidreza Milaninia برای پروژه های ARDUnia توسعه یافته است.

ویژگی ها

  • Debounce غیرمسدودکننده با استفاده از millis()
  • تشخیص Press و Release
  • تشخیص Single Click
  • تشخیص Double Click
  • تشخیص Multi Click
  • تشخیص Long Press
  • تشخیص وضعیت Hold
  • Repeat هنگام نگه داشتن کلید
  • زمان بندی قابل تنظیم
  • API مبتنی بر Polling
  • API مبتنی بر Callback
  • بدون تخصیص حافظه پویا
  • بدون وابستگی به کتابخانه های شخص ثالث
  • مدیریت صحیح سرریز millis()
  • پشتیبانی از Active-LOW و Active-HIGH
  • پشتیبانی از INPUT و INPUT_PULLUP
  • پشتیبانی از INPUT_PULLDOWN در هسته های Arduino که آن را تعریف کرده باشند

اتصال سخت افزاری

در حالت پیش فرض، کلید بین پایه دیجیتال و GND قرار می گیرد:

Arduino GPIO ----[ BUTTON ]---- GND

کتابخانه در حالت پیش فرض از مقاومت Pull-Up داخلی استفاده می کند و بنابراین نیازی به مقاومت Pull-Up خارجی نیست.

زمان بندی پیش فرض

تنظیممقدار پیش فرض
Debounce30 ms
Long Press1000 ms
Double Click400 ms
Repeat Initial Delay500 ms
Repeat Interval100 ms

تمام این مقادیر قابل تنظیم هستند.

نمونه استفاده

#include <ARDUniaButton.h>

ARDUniaButton button(7);

void setup() {
  Serial.begin(115200);
  button.begin();
}

void loop() {
  button.update();

  if (button.wasPressed())
    Serial.println("Pressed");

  if (button.wasReleased())
    Serial.println("Released");

  if (button.wasClicked())
    Serial.println("Click");

  if (button.wasDoubleClicked())
    Serial.println("Double Click");

  if (button.wasLongPressed())
    Serial.println("Long Press");

  if (button.wasRepeated())
    Serial.println("Repeat");
}

API

وضعیت کلید

button.isPressed();
button.isReleased();
button.isHeld();
button.state();

رویدادها

button.wasPressed();
button.wasReleased();
button.wasClicked();
button.wasDoubleClicked();
button.wasMultiClicked();
button.wasLongPressed();
button.wasRepeated();
button.event();
button.clickCount();

تنظیم زمان بندی

button.setDebounce(30);
button.setLongPressTime(1000);
button.setDoubleClickTime(400);
button.setRepeat(500, 100);

Callback

button.onPress(callback);
button.onRelease(callback);
button.onClick(callback);
button.onDoubleClick(callback);
button.onMultiClick(callback);
button.onLongPress(callback);
button.onRepeat(callback);

نمونه های همراه کتابخانه

کتابخانه شامل نمونه های زیر است:

  • BasicUsage — استفاده از API مبتنی بر Polling
  • Callbacks — استفاده از Callback ها
  • VolumeControl — استفاده عملی از قابلیت Repeat

سازگاری

ARDUniaButton از API های استاندارد Arduino استفاده می کند و وابستگی به کتابخانه های شخص ثالث ندارد.

نسخه فعلی روی موارد زیر آزمایش شده است:

  • Arduino UNO
  • ESP8266
  • ESP32

معماری کتابخانه در library.properties به صورت عمومی تعریف شده است و محدود به یک معماری خاص نیست.

مجوز

این پروژه تحت مجوز MIT منتشر شده است.

توسعه دهنده

ARDUniaButton یک پروژه متن باز از ARDUnia است که توسط Hamidreza Milaninia توسعه داده شده است.

ویژگی ها

  • Debounce غیرمسدودکننده
  • Press و Release / Single Click / Double Click /Multi Click
  • Long Press / Hold / Repeat
  • زمان بندی قابل تنظیم
  • API مبتنی بر Polling / API مبتنی بر Callback
  • Active-LOW و Active-HIGH / INPUT و INPUT_PULLUP
  • بدون وابستگی به کتابخانه های شخص ثالث / بدون تخصیص حافظه پویا

نصب در Arduino IDE

روش اول: Arduino Library Manager

در Arduino IDE از مسیر زیر وارد شوید:

Sketch → Include Library → Manage Libraries

سپس عبارت ARDUniaButton را جستجو کرده و کتابخانه را نصب کنید.

روش دوم: نصب از فایل ZIP

آخرین نسخه Release را از GitHub دانلود کنید.

سپس در Arduino IDE به مسیر زیر بروید:

Sketch → Include Library → Add .ZIP Library

فایل ZIP دانلود شده را انتخاب کنید.

نصب در PlatformIO

در فایل `platformio.ini` پروژه، کتابخانه را از GitHub اضافه کنید:

```ini
lib_deps =
    https://github.com/ARDUnia/ARDUniaButton.git
```

سپس پروژه را Build کنید.

شروع سریع

#include <ARDUniaButton.h>

ARDUniaButton button(7);

void setup() {
  Serial.begin(115200);
  button.begin();
}

void loop() {
  button.update();

  if (button.wasClicked()) {
    Serial.println("Button clicked!");
  }

  if (button.wasLongPressed()) {
    Serial.println("Long press!");
  }
}

→ بازگشت به کتابخانه ها