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

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

#include <Wireh>

#include "MPU6050h"

#include <Ultrasonich>

#include "I2Cdevh"

#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总线

Wirebegin();

//初始化串口通信频道

Serialbegin(9600);

//初始化模块

//my_gyroinitialize();

my_hcsrmeasure();

startTime = millis();

//初始化完成后指示灯常亮

pinMode(LED_PIN,HIGH);

}

void loop() {

//获取车身姿态

//ax=my_gyrogetAccelerationX();

//rx=my_gyrogetRotationX();

//获取前方障碍物距离

my_hcsrmeasure();

distance=millis()-startTime;

distance/=1000;

distance=my_hcsrget_cm();

Serialprint(distance,3);

Serialprintln("cm");

delay(50);

}

首先你这没有注释以及毫无含义的变量名的程序 看起来很令人头疼

然后看你这程序 应该是每65ms扫描一次ex也就是P21的状态 tx我猜应该是用来触发模块的吧 触发后你停在ex==0这个状态直到ex==1 这个时候开了定时器 t=6也就是 顶多400ms半秒不到的样子 如果这个时候恰好有个状态满足了 flag置了1 那么你的程序就会执行右转 但是执行后 你没有执行将flag清零 也就是不会出现前进这个状态了

问题应该出在:实际接线时开关并了104电容,这会产生延迟的。

当程序读按键时,因延时按键还没有接触上。

解决方法,换成小一些电容,在调用读键盘子程序时,加延时。

因为仿真是没有延迟的,就算是加了电容,仿真时也不起作用。所以,仿真可以通过。但实物,电容就起作用了。

或者,先拿掉电容,执行一下程序,看能不能通过,就知道,是不是因为电容的原因了。

以上就是关于这是我在arduino上用hc-sr04超声波测距的代码,但是结果一直都是0.00,不知道哪里错了,求大神解答全部的内容,包括:这是我在arduino上用hc-sr04超声波测距的代码,但是结果一直都是0.00,不知道哪里错了,求大神解答、我用hc-sr04模块测距,当左右两个模块中某一个检测到10cm处有障碍时,电机相应转动,我写了程序但就是不对、超声波模块HC-SR04用Proteus怎么模拟,初学者求助等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9332444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存