创客联盟网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

开思网在线3D打印服务
查看: 21895|回复: 2

Arduino小白自学教程021——超声波测距+视频!

[复制链接]
发表于 2013-7-25 21:32:27 | 显示全部楼层 |阅读模式

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我们用的超声波模块是HC-SR04,它有Vcc,Trig,Echo,GND。VCC和GND对应接板子+5V和负极。Trig是触发控制端,Echo是接收端 图片12.jpg
大概的工作原理:
给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.00cm

发表于 2013-11-19 20:36:25 | 显示全部楼层

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2013-12-3 23:52:46 | 显示全部楼层

马上注册(开思网用户可以直接登录),结交更多创客好友,享用更多功能,让你轻松玩转创客社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|创客联盟网  

GMT+8, 2024-3-29 20:29 , Processed in 0.019275 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表