[笔记]Arduino平台使用US-100超声波测距模块的电平模式测距实验

参考文档 "US-100超声波测距模块在Arduino平台上的使用说明.pdf"(http://vdisk.weibo.com/s/1_3ZQ),终于实现了在Arduino平台使用US-100超声波测距模块的电平模式测距实验。

代码如下:

/* ----------------------------------------
* 超声波测距模块US-100电平方式测距
* 选择电平方式需要去掉模块背面的跳线
* US-100的探头面向自己时,从左到右Pin脚依次为:
* VCC / Trig(Tx) / Echo(Rx) / GND / GND
* 两个GND只需要一个接地即可
* -----------------------------------------
*/

unsigned int echoPin = 2; // 将Arduino 的Pin2 连接至US-100 的Echo/RX
unsigned int trigPin = 3; // 将Arduino 的Pin3 连接至US-100 的Trig/TX

void setup(){
Serial.begin(9600); // 测量结果将通过此串口输出至PC 上的串口监视器
pinMode(echoPin, INPUT); // 设置echoPin 为输入模式。
pinMode(trigPin, OUTPUT); // 设置trigPin 为输出模式。
}

void loop(){
unsigned long time_echo_us = 0;
unsigned long dist_mm = 0;

// 通过Trig/Pin 发送脉冲,触发US-100 测距
digitalWrite(trigPin, LOW); // 先拉低,以确保脉冲识别正确
delayMicroseconds(2); // 等待2us
digitalWrite(trigPin, HIGH); // 开始通过Trig/Pin 发送脉冲
delayMicroseconds(12); // 设置脉冲宽度为12us (>10us)
digitalWrite(trigPin, LOW); // 结束脉冲

time_echo_us = pulseIn(echoPin, HIGH); // 计算US-100 返回的脉冲宽度
if((time_echo_us < 60000) && (time_echo_us > 1))// 脉冲有效范围(1, 60000).
{
// dist_mm = (time_echo_us * 0.34mm/us) / 2 (mm)
dist_mm = time_echo_us*5/29; // 通过脉冲宽度计算距离.

Serial.print("Distance is: "); // 输出结果至串口监视器
Serial.print(dist_mm, DEC); // 输出结果至串口监视器
Serial.println("mm"); // 输出结果至串口监视器
}

delay(500); // 每秒测量2次
}

建议先读一下这篇文档再进行操作,以免出现莫名其妙的问题。

转载于:https://www.cnblogs.com/journeyonmyway/archive/2012/01/15/2323090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值