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 MPU-6050仅移动一个轴时更改X和Z轴值_Arduino_Mpu6050 - Fatal编程技术网

Arduino MPU-6050仅移动一个轴时更改X和Z轴值

Arduino MPU-6050仅移动一个轴时更改X和Z轴值,arduino,mpu6050,Arduino,Mpu6050,我正在建造一架无人驾驶飞机,并使用Arduino无人驾驶飞机来控制它。然而,当我倾斜无人机来测试它时,例如在X轴上,程序说它在X轴和Z轴上都倾斜了。我使用的是MPU6050陀螺仪。以下是我正在使用的代码: //Written by Ahmet Burkay KIRNIK //Measurement of Angle with MPU-6050(GY-521) #include<Wire.h> const int MPU_addr=0x68; int16_t AcX,AcY,AcZ

我正在建造一架无人驾驶飞机,并使用Arduino无人驾驶飞机来控制它。然而,当我倾斜无人机来测试它时,例如在X轴上,程序说它在X轴和Z轴上都倾斜了。我使用的是MPU6050陀螺仪。以下是我正在使用的代码:

//Written by Ahmet Burkay KIRNIK
//Measurement of Angle with MPU-6050(GY-521)

#include<Wire.h>

const int MPU_addr=0x68; int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

int minVal=265; int maxVal=402;

double x; double y; double z;

void setup(){ Wire.begin(); Wire.beginTransmission(MPU_addr); Wire.write(0x6B); Wire.write(0); Wire.endTransmission(true); Serial.begin(9600); } void loop(){ Wire.beginTransmission(MPU_addr); Wire.write(0x3B); Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); AcX=Wire.read()<<8|Wire.read(); AcY=Wire.read()<<8|Wire.read(); AcZ=Wire.read()<<8|Wire.read(); int xAng = map(AcX,minVal,maxVal,-90,90); int yAng = map(AcY,minVal,maxVal,-90,90); int zAng = map(AcZ,minVal,maxVal,-90,90);

x= RAD_TO_DEG * (atan2(-yAng, -zAng)+PI); y= RAD_TO_DEG * (atan2(-xAng, -zAng)+PI); z= RAD_TO_DEG * (atan2(-yAng, -xAng)+PI);

Serial.print("AngleX= "); Serial.println(x);

Serial.print("AngleY= "); Serial.println(y);

Serial.print("AngleZ= "); Serial.println(z); delay(400); }
//由Ahmet Burkay KIRNIK编写
//使用MPU-6050(GY-521)测量角度
#包括
常数int MPU_addr=0x68;int16_t AcX、AcY、AcZ、Tmp、GyX、GyY、GyZ;
int minVal=265;int-maxVal=402;
双x;双y;双z;

void setup(){Wire.begin();Wire.beginTransmission(MPU_addr);Wire.write(0x6B);Wire.write(0);Wire.endTransmission(true);Serial.begin(9600);}void loop(){Wire.beginTransmission(MPU_addr);Wire.write(0x3B);Wire.endTransmission(false);Wire.requestFrom(MPU_addr,14,true);AcX=Wire.read()没有人的运动是完美的,只有一个轴,你可能是在另一个轴移动。 如果是我,确保我将芯片/电路板/无人机固定在桌子的边缘或类似位置,并将其倾斜一点,看看是否只看到一个轴上的运动。 您应该只看到可忽略的移动和另一个轴 如果它仍然显示意外的显著移动 你的芯片可能坏了 我曾经有一个便宜的中国飞行控制器,它使用mpu6050板载发送给我坏了,但对我来说,问题是没有在一个轴上移动
但是我想这是有可能的,陀螺仪坏了,但是新的还是坏了,但是可以工作。不管怎么说,它是陀螺仪。

不,两个轴的变化量差不多,即使很明显一个轴倾斜了很多。另外,我可能会买一个新的芯片来测试它。也许可以试试这里的示例代码,看看它是否不是硬件问题不,那个代码也有同样的功能。新的明天会到达,然后我再看。很抱歉,迟来的回复,新的芯片解决了这个问题,但是现在z轴偏离了90度,但我只是围绕它编程,它可以正常工作。我仍然有一个问题,但它与陀螺仪无关。硬件决定了我的方向s“向下”,所以通常你需要纠正正确的方向和方向。无论如何,很高兴听到!