gpt4 book ai didi

java - Arduino Ping))) 传感器在显示一些结果后突然停止

转载 作者:行者123 更新时间:2023-12-01 14:25:06 27 4
gpt4 key购买 nike

我有一个正确连接的 ping))) 传感器 (HC - SR04)。

我在没有接地的情况下启动它(否则它甚至不想启动)并且它不断向串行窗口(距离)写入0。将其插入接地引脚后,我会得到几行正确的距离读数,然后它停止并挂起,串行窗口中没有更多结果,并且板本身似乎处于故障状态,我需要拔掉插头将其从 USB 上拔下,断开接地,然后重新插入 USB。

问题的原因可能是什么?

代码:

#define echoPin 2 // Echo Pin
#define trigPin 4 // Trigger Pin
#define LEDPin 13 // Onboard LED

int maximumRange = 200; // Maximum range needed
int minimumRange = 0; // Minimum range needed
long duration, distance; // Duration used to calculate distance
int currentDistance = 0;

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LEDPin, OUTPUT); // Use LED indicator (if required)
}

void loop() {
/* The following trigPin/echoPin cycle is used to determine the
distance of the nearest object by bouncing soundwaves off of it. */
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);

digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);

//Calculate the distance (in cm) based on the speed of sound.
distance = duration/58.2;

if (distance >= maximumRange || distance <= minimumRange){
/* Send a negative number to computer and Turn LED ON
to indicate "out of range" */
Serial.println("-1");
digitalWrite(LEDPin, HIGH);
} else {
/* Send the distance to the computer using Serial protocol, and
turn LED OFF to indicate successful reading. */
Serial.println(distance);
digitalWrite(LEDPin, LOW);
}

//Delay of 50 ms before next reading.
delay(50);
}

------------------------ 更新 ---------------------- --------

看来问题不在于传感器,而在于串行接口(interface):我已附加一个 LED到板并根据距离给它一个模拟值。一旦Arduino“卡住”,LED仍能正常工作,所以我猜问题出在Arduino关闭串行接口(interface)并停止通过USB传输数据。

如何解决这个问题?

最佳答案

传感器卡在零的解决方案在此链接中。这是 docdoc 的第二篇文章。您将需要使用更好的 NewPing 库。

工作代码:

#include <NewPing.h>
#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
Serial.begin(9600);
}

void loop() {
delay(50);
unsigned int uS = sonar.ping();
pinMode(ECHO_PIN,OUTPUT);
digitalWrite(ECHO_PIN,LOW);
pinMode(ECHO_PIN,INPUT);
Serial.print("Ping: ");
Serial.print(uS / US_ROUNDTRIP_CM);
Serial.println("cm");
}

链接:http://forum.arduino.cc/index.php?topic=55119.15

NewPing 链接:http://playground.arduino.cc/Code/NewPing

关于java - Arduino Ping))) 传感器在显示一些结果后突然停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17217299/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com