Ansifa
发表于 2013-1-29 00:39:53
xys 发表于 2013-1-28 19:27 static/image/common/back.gif
写程序时,先在TXD引脚端为8个40K周期电平,程序处理变换成一个PWM的信号从RXD引脚输出,一旦检测到有回波信号则输出回响信号,供我们方便使用。
从这里可以看出不是串口,只是普通的模块,可以用上面的代码直接用。trig对应TXD,echo对应RXD就行
葱拌豆腐
发表于 2013-1-31 12:58:31
晚上回家试试,买了超声波测距仪一直没试。
刚才查了一下pulseIn函数的手册,感觉有必要加个超时时间。
葱拌豆腐
发表于 2013-2-1 08:32:43
实验汇报:昨天晚上在家做了一下实验,基本效果出来了,但是有时候距离显示为负值,不知道为什么,后来增加了一个float变量用来存储pulseIn的时间长度,然后用这个变量除以58得出距离。出现负值个人猜想可能是int值溢出了,周末再继续测试一下。
Ansifa
发表于 2013-2-2 12:01:35
葱拌豆腐 发表于 2013-2-1 08:32 static/image/common/back.gif
实验汇报:昨天晚上在家做了一下实验,基本效果出来了,但是有时候距离显示为负值,不知道为什么,后来增加 ...
我做的也有时候会负值,感觉程序不会出错啊,那时直接加个if判断距离在0~2米之内就通过算了。没有再深究,期望有个更好解决方法
laofuz1024
发表于 2013-2-8 01:17:16
这个好啊,嘿嘿,
bys_1123
发表于 2013-2-8 16:09:06
黑马 发表于 2012-4-18 15:10 static/image/common/back.gif
支持,正好找了一个传感器,用手水平转了一圈扫的数据~~
右上的平面是电脑的屏幕,旁边突出来的是热水 ...
这是用的什么软件?
longtsiu
发表于 2013-2-23 21:55:26
感觉跳动还是很大。
Lockon
发表于 2013-4-9 17:33:37
刚入门的新手,谢谢楼主详解
code-AR
发表于 2013-5-21 20:01:10
学习了,学习楼主
竹空闻樱
发表于 2013-5-21 20:54:09
好贴,支持一下。:)
philhoo
发表于 2013-5-27 20:57:40
做了这个实验,让测试结果在1602液晶屏上显示。用了SR04的库。
#include "SR04.h"
#define TRIG_PIN 8
#define ECHO_PIN 9
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;
void setup() {
lcd.begin(16, 2);
delay(1000);
}
void loop() {
a=sr04.Distance();
lcd.clear(); //清屏
lcd.print("Now Range is"); //使屏幕显示文字
lcd.setCursor(0, 1) ; //设置光标位置为第二行第一个位置
lcd.print(a); //显示温度
lcd.print("CM"); //显示字母
delay(1000);
}
华子
发表于 2013-6-3 11:44:50
Ansifa 发表于 2013-1-28 15:03 static/image/common/back.gif
你的是串口输出吗?型号是啥呢,如果串口的话,接arduino的TX/RX引脚
楼主,那这么接线的话,初始化时候是不是要更改定义,具体又怎么定义呢?
robotStudio
发表于 2013-6-8 17:40:18
好帖是必须要顶起来的,但是我之前做的wifi小车用到了这个超声波,用单片机怎么也驱动不了,但是arduino就没有问题,非常奇怪。。。
jju0808
发表于 2013-6-8 22:37:25
yyy_zc 发表于 2012-6-27 22:14 static/image/common/back.gif
把echo 脚拔了,输出就是0.00 cm 了,查一下物理连接
我的是按照说明书上连接的UNO引脚0和1.也是只能输出0.00cm。但是我把delay()删除掉后就能正常输出结果了。这事为什么啊?
jju0808
发表于 2013-6-9 00:05:13
刚才的问题,已经解决。是引脚的问题,使用2和3就行。