diff --git a/README.md b/README.md index dd10541..f7b54c3 100644 --- a/README.md +++ b/README.md @@ -52,10 +52,13 @@ void app_main(void) encoder_init_config.a_gpio_number = GPIO_NUM_27; encoder_init_config.b_gpio_number = GPIO_NUM_26; // encoder_init_config.encoder_min_value = -10; // Just for example. - // encoder_init_config.encoder_max_value = 10; // Just for example. + // encoder_init_config.encoder_max_value = 20; // Just for example. // encoder_init_config.encoder_step = 0.1; // Just for example. encoder_init_config.encoder_number = 1; zh_encoder_init(&encoder_init_config, &encoder_handle); + double position = 0; + zh_encoder_get(&encoder_handle, &position); + printf("Encoder position %0.2f.\n", position); // For ESP8266 first disable "Component config -> Newlib -> Enable ‘nano’ formatting options for printf/scanf family" via menuconfig. // zh_encoder_set(&encoder_handle, 5); // Just for example. // zh_encoder_reset(&encoder_handle); // Just for example. } @@ -63,6 +66,6 @@ void app_main(void) void zh_encoder_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { zh_encoder_event_on_isr_t *event = event_data; - printf("Encoder number %d position %.2f.\n", event->encoder_number, event->encoder_position); + printf("Encoder number %d position %.2f.\n", event->encoder_number, event->encoder_position); // For ESP8266 first disable "Component config -> Newlib -> Enable ‘nano’ formatting options for printf/scanf family" via menuconfig. } ``` diff --git a/include/zh_encoder.h b/include/zh_encoder.h index 6e1b657..75a416d 100644 --- a/include/zh_encoder.h +++ b/include/zh_encoder.h @@ -83,6 +83,16 @@ extern "C" */ esp_err_t zh_encoder_set(zh_encoder_handle_t *handle, double position); + /** + * @brief Get encoder position. + * + * @param[in] handle Pointer to unique encoder handle. + * @param[out] position Encoder position. + * + * @return ESP_OK if success or an error code otherwise. + */ + esp_err_t zh_encoder_get(const zh_encoder_handle_t *handle, double *position); + /** * @brief Reset encoder position. * diff --git a/zh_encoder.c b/zh_encoder.c index 26d5b8b..8e3ca15 100644 --- a/zh_encoder.c +++ b/zh_encoder.c @@ -80,6 +80,15 @@ esp_err_t zh_encoder_set(zh_encoder_handle_t *handle, double position) return ESP_OK; } +esp_err_t zh_encoder_get(const zh_encoder_handle_t *handle, double *position) +{ + ZH_ENCODER_LOGI("Encoder get position started."); + ZH_ENCODER_CHECK(handle->is_initialized == true, ESP_FAIL, "Encoder get position failed. Encoder not initialized."); + *position = handle->encoder_position; + ZH_ENCODER_LOGI("Encoder get position completed successfully."); + return ESP_OK; +} + esp_err_t zh_encoder_reset(zh_encoder_handle_t *handle) { ZH_ENCODER_LOGI("Encoder reset started.");