1.7 KiB
1.7 KiB
ESP32 ESP-IDF component for inclinometer (via optical rotary encoder)
SAST Tools
PVS-Studio - static analyzer for C, C++, C#, and Java code.
Features
- Quadrature encoder support with configurable GPIO pins.
- Configurable pull-up resistor enablement for encoder channels.
- Support for both clockwise and counter-clockwise rotation directions.
- Configurable pulses per revolution for accurate angle calculation.
- Position tracking with get and reset operations.
- PCNT glitch filter for noise rejection (1000ns).
- Multiple inclinometer instances support.
Note
Enable the following settings in menuconfig:
PCNT_CTRL_FUNC_IN_IRAM
PCNT_ISR_IRAM_SAF
Using
In an existing project, run the following command to install the components:
cd ../your_project/components
git clone https://github.com/aZholtikov/zh_inclinometer
In the application, add the component:
#include "zh_inclinometer.h"
Example
#include "zh_inclinometer.h"
zh_inclinometer_handle_t *inclinometer_handle = NULL;
void app_main(void)
{
esp_log_level_set("zh_inclinometer", ESP_LOG_ERROR);
zh_inclinometer_init_config_t config = ZH_INCLINOMETER_INIT_CONFIG_DEFAULT();
config.a_gpio_number = GPIO_NUM_26;
config.b_gpio_number = GPIO_NUM_27;
config.encoder_pulses = 3600;
zh_inclinometer_init(&config, &inclinometer_handle);
for (;;)
{
float angle = 0;
zh_inclinometer_get(&inclinometer_handle, &angle);
printf("Inclinometer position is %0.2f degrees.\n", angle);
vTaskDelay(100 / portTICK_PERIOD_MS);
}
}