Hur man mäter vinkel med MPU-6050(GY-521) (2 / 3 steg)
Steg 2: kod
Här är koden. Den använder I2C. Jag tog vissa delar av koden från internet. (I2C del)
Skrivet av Ahmet Burkay KIRNIK
TR_CapaFenLisesi //Measure vinkel med en MPU-6050(GY-521)
#include
CONST int MPU_addr = 0x68; int16_t AcX AVAL, AcZ, Tmp, GyX, GyY, GyZ;
int minVal = 265; int maxVal = 402;
dubbel x; dubbla y; dubbel 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 * (ARCTAN2 (-yAng, -zAng) + PI); y = RAD_TO_DEG * (ARCTAN2 (-xAng, - zAng) + PI); z = RAD_TO_DEG * (ARCTAN2 (-yAng, -xAng) + PI);
Serial.Print ("AngleX ="); Serial.println(x);
Serial.Print ("AngleY ="); Serial.println(y);
Serial.Print ("AngleZ ="); Serial.println(z); Serial.println("---"); Delay(400); }