嘿你好 发表于 2013-7-19 18:35:20

超声波传感器测距的输出结果

本帖最后由 嘿你好 于 2013-7-20 14:53 编辑

简单的超声波传感器测距。图片里是结果,为什么里面会夹杂几个-500?求教导。
问题不在代码吧?:
int inputPin=4; // 定义超声波信号接收接口
int outputPin=5; // 定义超声波信号发出接口
int ledpin=13;
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
pinMode(inputPin, INPUT);
pinMode(outputPin, OUTPUT);
}
void loop()
{
digitalWrite(outputPin, LOW);
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平
int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间
distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)
Serial.println(distance); //输出距离值
delay(50);
if (distance >=50)
{//如果距离大于50厘米小灯亮起
digitalWrite(ledpin,HIGH);
}//如果距离小于50厘米小灯熄灭
else
digitalWrite(ledpin,LOW);
}

嘿你好 发表于 2013-7-20 14:52:25

好像明白了
应该是测量周期太短,设为60ms后基本就不会出现了。
周期越小,出现的负值的范围就越大,如:完全撤销delay后,出现的负值的可能值为-100至-500.
由于测量周期太短,前一个测量的返回声波对下一次测量造成影响。

(好桑心啊。。自问自答。。都没牛人鸟我。。)

风笛丸 发表于 2013-11-25 12:01:46

给我这样的新手提供帮助了,谢谢,切莫伤心:lol
页: [1]
查看完整版本: 超声波传感器测距的输出结果