Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino HC-SR04传感器动作异常_Arduino_Distance_Sensors - Fatal编程技术网

Arduino HC-SR04传感器动作异常

Arduino HC-SR04传感器动作异常,arduino,distance,sensors,Arduino,Distance,Sensors,我对Arduino很陌生,但我正在努力学习,但目前我遇到了一个问题。传感器静止时的输出显示距离峰值。是传感器有故障还是代码有问题 输出: 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: 2

我对Arduino很陌生,但我正在努力学习,但目前我遇到了一个问题。传感器静止时的输出显示距离峰值。是传感器有故障还是代码有问题

输出:

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
代码:


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

0我认为在缺少信息的情况下无法回答这个问题,而且这似乎不是一个编程问题。读数时,物体离传感器有多远?它的最大额定距离是多少?镜头脏了吗?它是如何被读取的?它在30厘米远之前就开始工作了。我不确定最大距离,但我想在它设法看到3米之前。它是干净的…尝试两件事:增加循环结束时的延迟,并远离杂乱(测量到墙壁)。这会提高你的性能吗?我认为它可以工作,但奇怪的是,每当我把它靠近笔记本电脑时,它仍然显示出废话。也许电动势与传感器、电子设备甚至与Arduino相互作用。谢谢
  * 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);
}