標(biāo)題:
自學(xué)HC-SR04超聲波模塊 附Arduino程序 UART iic GPIO
[打印本頁]
作者:
技法盧卡斯JFK了
時間:
2024-1-16 16:45
標(biāo)題:
自學(xué)HC-SR04超聲波模塊 附Arduino程序 UART iic GPIO
使用的硬件:STM32F103C8T6,HC-SR04,ST-Link(其他燒錄器也可以),0.96寸OLED屏幕(非必須,僅供顯示測距結(jié)果,可以使用串口助手代替),若干杜邦線。
涉及操作stm32的GPIO口,外部中斷,定時器,本文中不會詳細(xì)解釋,僅提供代碼思路。
源程序:
/*
模塊: 帶UART功能的HC-SR04(2020款)系列超聲波測距模塊
主控芯片: RCWL-9300系列
功能: 串口模式下讀取HC-SR04(2020款)系列超聲波測距模塊距離數(shù)據(jù)并串口顯示
注意: HC-SR04(2020款)系列模塊選擇成UART模式,即模式選擇UART。
編寫: 無錫日晨物聯(lián)科技有限公司
方案定制: 18851501095
串口數(shù)據(jù)格式: RCWL-1661串口輸出3位8BIT數(shù)據(jù),距離MM值=24位數(shù)據(jù)轉(zhuǎn)換成10進制/10000。
連線:
-VCC = 5V /3.3V/3-40V
-TRIG/RX/SCL = A5
-ECHO/TX/SDA = A4
-GND = GND
*/
#include "SoftwareSerial.h"
SoftwareSerial mySerial(A4, A5); // A4為RX, A5為TX; A4接模塊TX,A5接模塊RX
float Data_h = 0; //高8位數(shù)據(jù)
float Data_m = 0; //中8位數(shù)據(jù)
float Data_l = 0; //低8位數(shù)據(jù)
float distance = 0; //距離數(shù)據(jù)十進制值
void setup()
{
Serial.begin(9600); //定義串口波特率9600 出廠默認(rèn)波特率9600
mySerial.begin(9600); //定義模擬串口波特率
Serial.println("HC-SR04(2020款) 測距開始:");
}
void loop()
{
Data_h = 0;
Data_m = 0;
Data_l = 0;
distance=0;
mySerial.flush(); //清模擬串口緩存數(shù)據(jù)
mySerial.write(0XA0); //發(fā)送開始測試數(shù)據(jù)0XA0,0XA0為開始測試命令數(shù)據(jù)
delay(120); //測量周期延時,一個周期為100mS,設(shè)置120MS,留余量
if (mySerial.available()>0) //等待接收完3個數(shù)據(jù)
{
Data_h= mySerial.read(); //讀取緩存數(shù)據(jù)
Data_m= mySerial.read();
Data_l= mySerial.read();
}
else
{
Data_h= 0; //讀取緩存數(shù)據(jù)
Data_m= 0;
Data_l= 0;
}
distance=(Data_h*65536+Data_m*256+Data_l)/10000; //計算成CM值
Serial.print("距離 : ");
if ((1<=distance)&&(900>=distance)) //1CM-9M之間數(shù)值顯示
{
Serial.print(distance);
Serial.print(" CM ");
}
else
{
Serial.print(" - - - - "); //無效數(shù)值數(shù)值顯示 - - - -
}
Serial.println();
// delay(100); //調(diào)節(jié)測量周期
}
復(fù)制代碼
原理圖: 無
仿真: 無
代碼:
HC-SR04(2020款)ARDUINO測試資料.7z
(48.02 KB, 下載次數(shù): 13)
2024-1-16 22:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1