From 9cdd0008a530a2441ad701b4ae7027235856dab7 Mon Sep 17 00:00:00 2001 From: yelvlab Date: Wed, 25 Sep 2024 17:25:07 +0800 Subject: [PATCH] Convert ultrasonic flight time to distance value --- src/main.c | 3 +++ src/ultrasonic_driver.c | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main.c b/src/main.c index f5edcb0..c396c80 100644 --- a/src/main.c +++ b/src/main.c @@ -13,6 +13,7 @@ #include "ultrasonic_driver.h" extern uint32_t capture_value; +uint16_t distance_uint16; /*! \brief main function @@ -52,6 +53,8 @@ int main(void) // printf("Send ultra sonic driver signal!\r\n"); delay_ms(2); printf("cap_val:%ld\n", capture_value); + distance_uint16 = calculate_distance(capture_value); + printf("Distance:%d\n", distance_uint16); } } diff --git a/src/ultrasonic_driver.c b/src/ultrasonic_driver.c index 746f34a..cd2274c 100644 --- a/src/ultrasonic_driver.c +++ b/src/ultrasonic_driver.c @@ -177,3 +177,15 @@ void ultrasonic_echo_timer_config(void) timer_icinitpara.icfilter = 0x03; // 设置滤波器 timer_input_capture_config(US_ECHO_TIMER, US_ECHO_CH, &timer_icinitpara); } + +uint16_t calculate_distance(uint32_t us_value) { + uint16_t distace = (TIME_CORRECTION_US + us_value) * 17; + /* + * (TIME_CORRECTION_US + us_value) * 340 m/s + * ----------------------------------------- + * 1000 000 + * ---------------------------------------------- + * 2 + */ + return distace; +}