https://github.com/ravensystem/esp-adv-button
esp-open-rtos library to use buttons and toggles
https://github.com/ravensystem/esp-adv-button
Last synced: 1 day ago
JSON representation
esp-open-rtos library to use buttons and toggles
- Host: GitHub
- URL: https://github.com/ravensystem/esp-adv-button
- Owner: RavenSystem
- License: other
- Created: 2019-08-10T15:15:30.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-20T12:23:13.000Z (about 3 years ago)
- Last Synced: 2025-09-22T08:50:06.828Z (6 months ago)
- Language: C
- Homepage:
- Size: 42 KB
- Stars: 2
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
# ESP Advanced Button library
Library for esp-open-rtos SDK to manage inputs from built-in GPIOs and MCP23017 interfaces.
When MCP23017 is used, GPIOs must be declared with this:
```c
adv_button_create(GPIO + (MCP_Index * 100), I2C Bus, Inverted, MCP Address);
```
Where MCP_Index is the number from `1` to enumerate all MCP boards, in case that several boards are used.
Requirements:
- Timers Helper: https://github.com/RavenSystem/timers-helper
- Advanced I2C: https://github.com/RavenSystem/adv-i2c
```c
/*
* Advanced Button Manager Example
*
* Copyright 2019-2022 José Antonio Jiménez Campos (@RavenSystem)
*
*/
#include
#include
#include
#include
#include "adv_button.h"
#ifndef BUTTON_GPIO
#define BUTTON_GPIO 0
#endif
#ifndef TOGGLE_GPIO
#define TOGGLE_GPIO 2
#endif
void singlepress_callback(const uint16_t gpio, void *args, const uint8_t param) {
printf(">>>>> Example button: Single Press function called using GPIO->%i\n", gpio);
}
void doublepress_callback(const uint16_t gpio, void *args, const uint8_t param) {
printf(">>>>> Example button: Double Press function called using GPIO->%i\n", gpio);
}
void longpress_callback(const uint16_t gpio, void *args, const uint8_t param) {
printf(">>>>> Example button: Long Press function called using GPIO->%i\n", gpio);
}
void verylongpress_callback(const uint16_t gpio, void *args, const uint8_t param) {
printf(">>>>> Example button: Very Long Press function called using GPIO->%i\n", gpio);
}
void holdpress_callback(const uint16_t gpio, void *args, const uint8_t param) {
printf(">>>>> Example button: Hold Press function called using GPIO->%i\n", gpio);
}
void toggle_callback(const uint16_t gpio, void *args, const uint8_t param) {
printf(">>>>> Example button: Toggle function called using GPIO->%i\n", gpio);
}
void user_init(void) {
uart_set_baud(0, 115200);
printf("\n>>>>> ADV BUTTON EXAMPLE\n\n");
adv_button_set_evaluate_delay(10);
adv_button_create(BUTTON_GPIO, true, false, ADV_BUTTON_NORMAL_MODE);
adv_button_register_callback_fn(BUTTON_GPIO, singlepress_callback, SINGLEPRESS_TYPE, NULL, 0);
adv_button_register_callback_fn(BUTTON_GPIO, doublepress_callback, DOUBLEPRESS_TYPE, NULL, 0);
adv_button_register_callback_fn(BUTTON_GPIO, longpress_callback, LONGPRESS_TYPE, NULL, 0);
adv_button_register_callback_fn(BUTTON_GPIO, verylongpress_callback, VERYLONGPRESS_TYPE, NULL, 0);
adv_button_register_callback_fn(BUTTON_GPIO, holdpress_callback, HOLDPRESS_TYPE, NULL, 0);
adv_button_create(TOGGLE_GPIO, true, false, ADV_BUTTON_NORMAL_MODE);
adv_button_register_callback_fn(TOGGLE_GPIO, toggle_callback, INVSINGLEPRESS_TYPE, NULL, 0); // Low
adv_button_register_callback_fn(TOGGLE_GPIO, toggle_callback, SINGLEPRESS_TYPE, NULL, 0); // High
}
```