Arduino - 超声波传感器 (SR04T) 仅测量 0
Arduino - Ultrasonic sensor (SR04T) measure only 0
我有一个超声波传感器 (SR04T) 已连接到我的 Arduino。我在 Arduino UNO 上使用 TX 和 RX 端口。问题是它只读取值 0 厘米。谁能帮我找出错误?
我使用的代码如下所示:
const int trigPin = 1;
const int echoPin = 0;
void setup() {
Serial.begin(9600);
}
void loop()
{
long duration, inches, cm;
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// convert time into cm
cm = microsecondsToCentimeters(duration);
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
你在这里做错了两件事。
您正在循环中设置 pinMode。没必要。将它们放在设置中。不需要连续设置pinmode。
您在使用串口时使用引脚 0 和 1 作为输入和输出。串行使用引脚 0 和 1 进行串行通信。使用其他引脚作为输入和输出。看看 http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.png
我有一个超声波传感器 (SR04T) 已连接到我的 Arduino。我在 Arduino UNO 上使用 TX 和 RX 端口。问题是它只读取值 0 厘米。谁能帮我找出错误?
我使用的代码如下所示:
const int trigPin = 1;
const int echoPin = 0;
void setup() {
Serial.begin(9600);
}
void loop()
{
long duration, inches, cm;
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// convert time into cm
cm = microsecondsToCentimeters(duration);
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
你在这里做错了两件事。
您正在循环中设置 pinMode。没必要。将它们放在设置中。不需要连续设置pinmode。
您在使用串口时使用引脚 0 和 1 作为输入和输出。串行使用引脚 0 和 1 进行串行通信。使用其他引脚作为输入和输出。看看 http://marcusjenkins.com/wp-content/uploads/2014/06/ARDUINO_V2.png