这是我在arduino上用hc-sr04超声波测距的代码,但是结果一直都是0.00,不知道哪里错了,求大神解答

int trigPin = 2; //接超声波 ECHO 到数字2脚
int echoPin = 3; // 接超声波 TRIG 到数字 3脚
float distance = 0;
void setup()
{ Serial.begin(9600);
pinMode(trigPin, INPUT);
pinMode(echoPin, OUTPUT);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // 发出持续时间为 10μ s到 trigger脚驱动超声波检测
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
distance = pulseIn(echoPin, HIGH); // 接收脉冲的时间
distance = distance/58.00; // 将脉冲时间转化为距离值
Serial.println(distance); //输出距离值(单位:厘米)
delay(50);
}
我知道了

第1个回答  2021-08-04
#include <Wire.h>
#include "MPU6050.h"
#include <Ultrasonic.h>
#include "I2Cdev.h"

#define LED_PIN 13 //指示灯

//MPU6050陀螺仪
//MPU6050 my_gyro(3);
//使用ax, rx来获取二轮车姿态
//x轴加速度 & 偏转角
short ax,rx;
//short = int16_t

//HC-SRO4超声波传感器
//TRIG_PIN & ECHO_PIN
Ultrasonic my_hcsr(5,6);
float distance;
int startTime;

void setup() {
pinMode(LED_PIN,LOW);

//加入I2C总线
Wire.begin();

//初始化串口通信频道
Serial.begin(9600);

//初始化模块
//my_gyro.initialize();
my_hcsr.measure();

startTime = millis();

//初始化完成后指示灯常亮
pinMode(LED_PIN,HIGH);

}

void loop() {
//获取车身姿态
//ax=my_gyro.getAccelerationX();
//rx=my_gyro.getRotationX();
//获取前方障碍物距离
my_hcsr.measure();
distance=millis()-startTime;
distance/=1000;
distance=my_hcsr.get_cm();
Serial.print(distance,3);
Serial.println("cm");
delay(50);
}
第2个回答  2017-10-16
我也遇到这个问题,如何破解求告知
第3个回答  2020-06-10
trig应该是OUTPUT
echoINPUT
第4个回答  2020-01-01
这种问题基本上都是因为delay的时间太短,不管是出于什么需求,2ms几乎是不欧克的
第5个回答  2014-07-18
莫非一直没有收到反馈?本回答被提问者采纳
相似回答