国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

asia域名發(fā)布網(wǎng)站谷歌瀏覽器安卓下載

asia域名發(fā)布網(wǎng)站,谷歌瀏覽器安卓下載,全新微信號2元一個自動下單,深圳企業(yè)網(wǎng)站模板一、簡介 HC-SR04 工作參數(shù)&#xff1a; ? 探測距離&#xff1a;2~600cm ? 探測精度&#xff1a;0.1cm1% ? 感應(yīng)角度&#xff1a;<15 ? 輸出方式&#xff1a;GPIO ? 工作電壓&#xff1a;DC 3~5.5V ? 工作電流&#xff1a;5.3mA ? 工作溫度&#xff1a;-40~85℃ 怎么…

一、簡介

HC-SR04 工作參數(shù):

? 探測距離:2~600cm

? 探測精度:0.1cm±1%

? 感應(yīng)角度:<15°

? 輸出方式:GPIO

? 工作電壓:DC 3~5.5V

? 工作電流:5.3mA

? 工作溫度:-40~85℃

?

  • ?怎么讓它發(fā)送波 Trig?

????????給Trig端口至少10us的高電平

  • 怎么知道它開始發(fā)了波 Echo引腳?

????????由低電平跳轉(zhuǎn)到高電平,表示開始發(fā)送波

  • 怎么知道接收了返回波 Echo?

????????由高電平跳轉(zhuǎn)回低電平,表示波回來了

  • 怎么算時間 ?

????????Echo引腳維持高電平的時間,波發(fā)出去的那一下,開始啟動定時器 波回來的那一下,我們開始停止定時器,計算出中間經(jīng)過多少時間

  • 怎么算距離?

????????距離 = 速度(343m/s) * 時間 / 2

?二、實驗前期準(zhǔn)備

????????因為想把測出來的距離打印在串口上,所以復(fù)制項目文件19-串口打印功能,重命名25-超聲波傳感器,新建文件夾hc-sr04

打開工程文件

加載文件

引腳接線

三、代碼:

main.c

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "uart1.h"
#include "hcsr04.h"int main(void)
{HAL_Init();                         /* 初始化HAL庫 */stm32_clock_init(RCC_PLL_MUL9); /* 設(shè)置時鐘, 72Mhz */led_init();//初始化led燈hcsr04_init();uart1_init(115200);while(1){ printf("距離是:%.2f\r\n",hcsr04_get_lenght());delay_ms(1000);}
}

hcsr04.c

#include "hcsr04.h"
#include "delay.h"TIM_HandleTypeDef tim2_handle = {0};//定義結(jié)構(gòu)體//定時器初始化函數(shù)
void timer_init()//把ARR和PSC當(dāng)作參數(shù)傳進來
{tim2_handle.Instance = TIM2; //選擇使用的定時器tim2_handle.Init.Prescaler = 72-1; //PSC:使其讀一個數(shù)用1ustim2_handle.Init.Period = 65536-1; //ARRtim2_handle.Init.CounterMode = TIM_COUNTERMODE_UP;//配置成向上的,默認向上的tim2_handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;  //自動重裝載,默認自動重裝載HAL_TIM_Base_Init(&tim2_handle);
//    HAL_TIM_Base_Start_IT(&tim2_handle);//設(shè)置使能更新中斷,和啟動計數(shù)器
}//msp函數(shù)
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM2){__HAL_RCC_TIM2_CLK_ENABLE();
//        HAL_NVIC_SetPriority(TIM2_IRQn,2,2);//設(shè)置優(yōu)先級
//        HAL_NVIC_EnableIRQ(TIM2_IRQn);//設(shè)置使能中斷}
}
//定時器啟動的函數(shù)
void tim2_start(void) 
{HAL_TIM_Base_Start(&tim2_handle);
}
//定時器關(guān)閉的函數(shù)
void tim2_stop(void) 
{HAL_TIM_Base_Stop(&tim2_handle);
}
//讀CNT計數(shù)器的值
uint16_t tim2_get_cnt(void) 
{return __HAL_TIM_GetCounter(&tim2_handle);
}
//將CNT計數(shù)器的值傳遞進來
void tim2_set_cnt(uint16_t val) 
{__HAL_TIM_SetCounter(&tim2_handle,val);
}
//初始化gpio口引腳
void hcsr04_gpio_init(void)
{   GPIO_InitTypeDef gpio_initstruct;//定義一個結(jié)構(gòu)體gpio_initstruct//打開trig和echo時鐘TRIG_GPIO_CLK_ENABLE();ECHO_GPIO_CLK_ENABLE();//調(diào)用TRIG的GPIO初始化函數(shù)gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;//推挽輸出gpio_initstruct.Pin = TRIG_PIN;//trig對應(yīng)的引腳gpio_initstruct.Pull = GPIO_NOPULL;//引腳不拉gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;//高速HAL_GPIO_Init(TRIG_PORT,&gpio_initstruct);//調(diào)用echo的GPIO初始化函數(shù)gpio_initstruct.Mode = GPIO_MODE_INPUT;//作為輸入引腳gpio_initstruct.Pin = ECHO_PIN;//echo對應(yīng)的引腳HAL_GPIO_Init(ECHO_PORT,&gpio_initstruct);
}
//初始化超聲波
void hcsr04_init(void)
{timer_init();//初始化定時器hcsr04_gpio_init();//初始化GPIO引腳}
//讀取超聲波測出來的距離
float hcsr04_get_lenght(void)
{uint16_t total_time = 0;  //定義一個變量用于接收CNT的值float distance = 0;//1、Trig,給Trig端口至少10us的高電平TRIG_HIGH();delay_us(15);TRIG_LOW();//2、Echo引腳,由低電平跳轉(zhuǎn)到高電平,表示開始發(fā)送波//波發(fā)出去的那一下,開始啟動定時器while(ECHO_STATUS() == GPIO_PIN_RESET);//用echo引腳是否從低電平變成高電平來決定波是否發(fā)出去了tim2_start(); //啟動定時器2tim2_set_cnt(0);//將定時器初始值置0//3、Echo,由高電平跳轉(zhuǎn)回低電平,表示波回來了//波回來的那一下,我們開始停止定時器while(ECHO_STATUS() == GPIO_PIN_SET);//用echo引腳是否從高電平變成低電平來決定波是否接到tim2_stop();//關(guān)掉定時器//4、Echo引腳維持高電平的時間=計算出中間經(jīng)過多少時間total_time = tim2_get_cnt();//用total_time接收CNT定時器里面的值//距離 = 速度(343m/s) * 時間 / 2//343m/s = 34300cm/s,因為距離是一個來回,所以要/2(這里速度除2下面路程就不用除2了)// = 34300/2 = 17150cm/s = 0.017150cm/usdistance = total_time * 0.01715;return distance;
}

hcsr04.h

#ifndef __HCSR04_H__
#define __HCSR04_H__#include "sys.h"#define TRIG_PORT                 GPIOB                                             //trig對應(yīng)gpio的哪一組
#define TRIG_PIN                  GPIO_PIN_6                                        //trig對應(yīng)gpio的哪個引腳
#define TRIG_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOB_CLK_ENABLE()                      //gpio口時鐘打開
#define TRIG_HIGH()               HAL_GPIO_WritePin(TRIG_PORT,TRIG_PIN,GPIO_PIN_SET)//trig對應(yīng)的引腳拉高
#define TRIG_LOW()                HAL_GPIO_WritePin(TRIG_PORT,TRIG_PIN,GPIO_PIN_RESET)//trig對應(yīng)的引腳拉低#define ECHO_PORT                 GPIOB                                             //echo對應(yīng)gpio的哪一組
#define ECHO_PIN                  GPIO_PIN_7                                        //echo對應(yīng)gpio的哪個引腳
#define ECHO_GPIO_CLK_ENABLE()    __HAL_RCC_GPIOB_CLK_ENABLE()                      //gpio口時鐘打開
#define ECHO_STATUS()             HAL_GPIO_ReadPin(ECHO_PORT,ECHO_PIN)              //讀取echo對應(yīng)的引腳電平void hcsr04_init(void);
float hcsr04_get_lenght(void);#endif

打開串口助手,每一秒超聲波都在測距

http://m.aloenet.com.cn/news/36147.html

相關(guān)文章:

  • 長治制作網(wǎng)站傳統(tǒng)營銷和網(wǎng)絡(luò)營銷的區(qū)別
  • ui設(shè)計與網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣渠道都有哪些
  • 網(wǎng)站一個人可以做嗎找培訓(xùn)機構(gòu)的網(wǎng)站
  • 網(wǎng)站建設(shè)技術(shù)分類aso具體優(yōu)化
  • 做中介開什么網(wǎng)站如何搜索網(wǎng)頁關(guān)鍵詞
  • 湖北網(wǎng)站建設(shè)企業(yè)百度sem推廣具體做什么
  • 富平做網(wǎng)站中國職業(yè)培訓(xùn)在線平臺
  • 網(wǎng)站設(shè)計創(chuàng)意2023年6月疫情情況
  • 做ppt好用的網(wǎng)站廣告代發(fā)平臺
  • wen前端網(wǎng)站開發(fā)日記外鏈的作用
  • 清遠企業(yè)網(wǎng)站排名win7優(yōu)化教程
  • 權(quán)重較高網(wǎng)站深圳百度推廣聯(lián)系方式
  • 專注大連網(wǎng)站建設(shè)百度推廣登錄手機版
  • asp.net 網(wǎng)站訪問量商品推廣與營銷的方式
  • 京東商城網(wǎng)站設(shè)計酒店如何進行網(wǎng)絡(luò)營銷
  • 畫冊制作揭陽seo推廣公司
  • 永嘉網(wǎng)站建設(shè)幾熱門關(guān)鍵詞
  • 山東美建站金華百度推廣公司
  • 開發(fā)一個視頻網(wǎng)站要多少錢360優(yōu)化大師app下載
  • 南城區(qū)網(wǎng)站仿做網(wǎng)絡(luò)營銷推廣與策劃
  • 05網(wǎng)亮點給力大試卷網(wǎng)站seo博客
  • 贛州信息港贛州熱線湖南seo網(wǎng)站多少錢
  • 我的世界做神器指令網(wǎng)站網(wǎng)絡(luò)平臺建站
  • 網(wǎng)站開發(fā)難學(xué)嗎今天的新聞 聯(lián)播最新消息
  • 用vs2010做的網(wǎng)站網(wǎng)頁設(shè)計模板圖片
  • 陽信做網(wǎng)站營銷型網(wǎng)站建設(shè)費用
  • 昆明做網(wǎng)站的個人淘寶seo搜索引擎原理
  • 南陽做網(wǎng)站百度搜索引擎排名規(guī)則
  • 公司網(wǎng)站開發(fā)交接注意事項seo研究中心怎么了
  • 做網(wǎng)站網(wǎng)絡(luò)seo優(yōu)化教程自學(xué)