首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HC-SR04传感器变得疯狂

HC-SR04传感器变得疯狂
EN

Stack Overflow用户
提问于 2018-05-11 05:30:51
回答 1查看 426关注 0票数 1

我对Arduino非常陌生,但我正在努力学习,但目前,我遇到了一个问题。传感器固定显示距离尖峰时的输出。是传感器有问题还是代码有问题?

输出:

代码语言:javascript
复制
Distance: 3540.65
Distance: 25.93
Distance: 3528.96
Distance: 25.42
Distance: 3550.34
Distance: 25.88
Distance: 3536.78
Distance: 36.27
Distance: 3501.94
Distance: 25.42
Distance: 28.37
Distance: 3531.37
Distance: 24.51
Distance: 26.99

代码:

代码语言:javascript
复制
  * HC-SR04 example sketch
  *
  * https://create.arduino.cc/projecthub/Isaac100/getting-started-with-the- hc-sr04-ultrasonic-sensor-036380
  *
  * by Isaac100
  */

const int trigPin = 9;
const int echoPin = 10;

float duration, distance;

void setup() {
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 Serial.begin(9600);
}

void loop() {
 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);

 duration = pulseIn(echoPin, HIGH);
 distance = (duration*.0343)/2;
 Serial.print("Distance: ");
 Serial.println(distance);
 delay(100);
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-14 18:25:20

我认为您已经找到了问题的答案,但将来我会建议您过滤这些值。也许可以考虑简单的中值滤波器或低通滤波器。中值滤波器:取最后一个X(例如可能是5)值,并将它们放入一个数组中。对数组进行排序。获取数组(X/2)值。现在它更有用了。您可以动态添加数据,这样您就不必累积10个数据,然后再对其进行过滤。例如,如果您收到新的测量值A:

A-新的测量值

X-要累积的数据量(过滤器强度)

0 <= I

arrayX -包含累积数据的数组

arrayi = A;

i++;

if(i==X) i=0;

就这么简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50281801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档