最近完了一下測距模組,本想挺簡單的乙個東西,卻折騰了好長時間。總算弄好了,貼到這裡和大家分享一下!
hc-sr04超聲波測距模組是一種被用爛了的感測器,它的優點是成本低,控制容易,但是掌握不好時序,還是會弄的人一頭霧水。
本模組用使用方法如下:
一. 5v直流電壓供電,一般的微控制器上自帶的vcc都能驅動
二. trig引腳收到來自微控制器時長大於等於20us的高點品後發出超聲波
三. echo引腳接收trig引腳發出的超聲波的回波,並且微控制器開啟定時器記錄高電平時間
四. 高電平結束後,關閉定時器,從定時器暫存器中取出記錄值,換算成距離即可。
在做的過程中注意:
網上有好多**,但是大多數互相抄襲,而且**質量都不怎麼高,每一句話什麼意思也不明白,所以不要照抄網上那些**,還是要自己琢磨;
在換算距離時,網上的**各種各樣,但結果都不符合實際,於是自己算了一下:
在我的程式中,定時器計時頻率是200000,週期就是1/200000,在這個週期裡,超聲波走的距離是(1/200000)*344/2=0.00085公尺,換算成公釐是0.86公尺,精度符合要求。
在獲取定時器的計數器值tim,於是tim*0.85就是實際距離,單位是公釐。
另外,超聲波測距模組的最遠測量距離是4公尺,可以算出距離在4公尺事定時器的計數值,x*340=4,得x=5000,所以設定定時器的溢位周一為5000.
好了,貼上**吧!
int main(void)
if(diatance_data<200) //定義距離在某一範圍內
else
}}void delay(__io uint32_t ncount)
}void led_init()
void gpio_configuration()
void tim2_configuration(u16 arr, u16 psc)
int get_diatance()
/************************中斷處理函式****************************/
void tim2_irqhandler(void)
}
STM32F407 驅動外部SRAM
需要驅動的sram型號為is61lv25616al,價效比比51216的高很多 配置cubemx 這幾個時序比較關鍵,可以按照手冊來計算,我用下來這幾個數值比較合適。然後就沒有然後了,生成 就可以用了。檢查sram內容是否正確 uint8 t bsp testextsram void 寫sram p...
STM32F407配置pca9685驅動
pca9685是16路12位pwm訊號發生器,可用於控制舵機 led 電機等裝置,i2c通訊,節省主機資源。在 上隨處可見,arduino用它非常方便,不過stm32要想使用它必須要寫好驅動才行,本文簡述如何配置其驅動以及一些需要注意的地方。應用與除錯 當然對於老手,看datasheet是最好的選擇...
STM32F407使用硬體SPI驅動MCP3008
前段時間校企合作專案裡一塊板子上用了mcp3008,一開始老是得到值,後來終於得到了,以此來寫一下部落格分享給大家,讓大家少走彎路。言歸正傳,我們開始 mcp3008是乙個逐漸接近的10位模擬數字轉化器,板載取樣和保持電路.它可程式設計,提供四個偽差分輸入對或八個單端輸入.微分非線性 dnl 積分非...