{"id":19241865,"url":"https://github.com/quantum-0/arduino-button-events","last_synced_at":"2026-05-13T21:35:05.536Z","repository":{"id":119170537,"uuid":"168201918","full_name":"Quantum-0/Arduino-Button-Events","owner":"Quantum-0","description":"This library allows you to easily process button's events like double/triple clicks and holding","archived":false,"fork":false,"pushed_at":"2019-01-29T21:04:36.000Z","size":13,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-23T14:43:49.617Z","etag":null,"topics":["arduino","arduino-ide","arduino-library","button","buttons","click","clicking","clicks","cpp","event","events","hold","holding","library","press","press-and-hold","pressing","tap","tapping","taps"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Quantum-0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-29T18:00:49.000Z","updated_at":"2022-10-12T19:19:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"48355fdf-6b0f-4ec8-9047-bb1433887f93","html_url":"https://github.com/Quantum-0/Arduino-Button-Events","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Quantum-0/Arduino-Button-Events","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-0%2FArduino-Button-Events","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-0%2FArduino-Button-Events/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-0%2FArduino-Button-Events/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-0%2FArduino-Button-Events/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Quantum-0","download_url":"https://codeload.github.com/Quantum-0/Arduino-Button-Events/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Quantum-0%2FArduino-Button-Events/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33001214,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"ssl_error","status_checked_at":"2026-05-13T13:14:51.610Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-ide","arduino-library","button","buttons","click","clicking","clicks","cpp","event","events","hold","holding","library","press","press-and-hold","pressing","tap","tapping","taps"],"created_at":"2024-11-09T17:12:47.734Z","updated_at":"2026-05-13T21:35:05.531Z","avatar_url":"https://github.com/Quantum-0.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arduino-Button-Events\n## Description\n\nThis library allows you to easily process next events of connected button to arduino:\n- Single tap/click\n- Double tap/click\n- Triple tap/click\n- Long tap/click\n- Press and hold for a time\n\n## Usage\n\nFirsly you need to include library\n```c++\n#include \u003cQuantumButton.h\u003e\n```\n\nThen declare button object\n```c++\nButton myButton(SENSOR_BUTTON_PIN);\n```\n\nThen subscribe to button events and set pin to INPUT/INPUT_PULLUP mode\n```c++\npinMode(SENSOR_BUTTON_PIN);\nmyButton.attachTap(callback_tap);\nmyButton.attachDoubleTap(callback_double_tap);\n```\n\nThen write that functions\n```c++\nvoid callback_tap() {\n    /* You code here */\n}\nvoid callback_double_tap() {\n    /* You code here */\n}\n```\n\nAnd then add calling loop function of button in your loop function\n```c++\nvoid loop() {\n    myButton.loop();\n}\n```\n\nThat's all you need to handle this button events!\n\n## Documentation\n\n```c++\n// Simply creates button object with pin number\nButton(uint8_t pin);\n// Example:\nButton btn(7);\n\n// Creates button object with pin number and choosing active state - can be used if your button gets you LOW when it's pressed\nButton(uint8_t pin, bool active_state);\n// Example:\nButton btn(28, LOW);\n\n// Creates button and subscribes it to single tap callback function\nButton(uint8_t pin, void (*onTap)(void));\n// Example:\nButton btn(19, tap_callback);\n\n// Creates button with all events and active state selection\nButton(uint8_t pin, bool active_state, void (*onTap)(void), void (*onDoubleTap)(void), void (*onTripleTap)(void), void (*onLongTap)(void), void (*onHold)(void));\n// Example:\nButton btn(15, HIGH, callback_tap, callback_2tap, callback_3tap, callback_longtap, callback_hold);\n\n\n// Attaches callback function to your button\nvoid attachTap(void (*onTap)(void));\nvoid attachDoubleTap(void (*onDoubleTap)(void));\nvoid attachTripleTap(void (*onTripleTap)(void));\nvoid attachLongTap(void (*onLongTap)(void));\nvoid attachHold(void (*onHold)(void));\n// Example:\nvoid callback_tap_function() {\n    Serial.print(\"Button pressed!\");\n}\nbtn.attachTap(callback_tap_function);\n\n// Also you can attach all callbacks in one code line:\nvoid attachAll(void (*onTap)(void), void (*onDoubleTap)(void), void (*onTripleTap)(void), void (*onLongTap)(void), void (*onHold)(void));\n// Example:\n btn.attachAll(callback_tap, callback_2tap, callback_3tap, callback_longtap, callback_hold);\n \n// Same for dettaching:\nvoid dettachAll();\nvoid dettachTap();\nvoid dettachDoubleTap();\nvoid dettachTripleTap();\nvoid dettachLongTap();\nvoid dettachHold();\n// Example:\nbtn.dettachAll();\n\n// To make button working you need to add loop function in program loop\nvoid loop();\n// Example:\nbtn.loop();\n\n// You can change active state for button after creating:\nvoid setActiveState(bool active_state);\n// Example:\nbtn.setActiveState(LOW);\n\n// If you button has short or long bouncing you can change it (default value is 30ms)\nvoid setBounceTime(uint16_t _bounce_time);\n// Example:\nbtn.setBounceTime(50);\n\n// If button may be pressed randomly and you dont want to handle it you can change skip tap time value (default is 5ms)\nvoid setSkipTapTime(uint16_t _skip_tap_time);\n// Example:\nbtn.setSkipTapTime(25);\n\n// If you want you button can be pressed twice or 3 times with more delays between presses you can increate MaxDelayBetweenTaps value (default is 300ms, so if you press button, wait 250ms and press it again it will be double click, if you press button, wait half a second and press it again it will be 2 different single clicks)\nvoid setMaxDelayBetweenTaps(uint16_t _delay_between_taps);\n// Example:\nbtn.setMaxDelayBetweenTaps(450);\n\n// You can change time, which will be handles as holding (default is 3000ms)\nvoid setHoldTime(uint16_t hold_time);\n// Example:\nbtn.setHoldTime(1500);\n\n// Also you can change time of long pressing time (default is 750ms)\nvoid setLongTapTime(uint16_t _long_tap_time);\n// Example:\nbtn.setLongTapTime(500);\n\n// And you can change time of single tap (default is 300ms)\nvoid setSingleTapTime(uint16_t _single_tap_time);\n// Example:\nbtn.setSingleTapTime(250);\n```\n\nFor examples of usage look \"examples\" folder.\n\n## How to install\n\n* Download library as ZIP Archive\n* Open Arduino IDE\n* Click Sketch -\u003e Include Library -\u003e Add .ZIP Library...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantum-0%2Farduino-button-events","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquantum-0%2Farduino-button-events","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantum-0%2Farduino-button-events/lists"}