创客联盟网

标题: Arduino小白自学教程021——超声波测距+视频! [打印本页]

作者: CCFIVE    时间: 2013-7-25 21:32
标题: Arduino小白自学教程021——超声波测距+视频!
我们用的超声波模块是HC-SR04,它有Vcc,Trig,Echo,GND。VCC和GND对应接板子+5V和负极。Trig是触发控制端,Echo是接收端 (, 下载次数: 117)
大概的工作原理:
给Trig脚至少10us的高电平信号,那么模块就会自动发送8个40KHz的方波,自动检测是否有信号返回;
当有信号返回,通过Echo就会输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.然后按这条公式:测试距离=(到高电平的持续时间*340m/s)/2;

[mw_shl_code=cpp,true]int Trig = 8;
int Echo = 9;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
void loop()
{
digitalWrite(Trig, LOW); //给一个高电平方波,触发模块发射超声波
delayMicroseconds(2);    //delayMicroseconds(X)是arduino自带函数,类似delay,但是这个延时单位是微秒
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);

cm = pulseIn(Echo, HIGH) / 58.0; //pulsenIn是用来检测有低电平跳变到高电平的时间,是arduino自带函数语句,将回波时间换算成cm
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm"); //串口输出距离
Serial.println();
delay(1000);
}[/mw_shl_code]

编译下载完,用东西挡在超声波模块前,打开串口窗口即可看到返回来的距离,如果返回是负值那就说明超出模块的测距距离了。
大家要注意下Trig,Echo一定要对应接好,不然串口返回的数据是0.00cmhttps://player.youku.com/player.php/sid/XNTU4MDUwOTg4/v.swf


作者: 赤道以北    时间: 2013-11-19 20:36
cm = pulseIn(Echo, HIGH) / 58.0; //pulsenIn是用来检测有低电平跳变到高电平的时间,是arduino自带函数语句,将回波时间换算成cm
为什么是58啊?
作者: greenage    时间: 2013-12-3 23:52
学习了




欢迎光临 创客联盟网 (https://immaker.org/) Powered by Discuz! X3.3