为什么这个角度计算只返回0或-1的值?

时间:2015-02-14 02:48:38

标签: arduino accelerometer angle

我试图从浅蓝色豆子上的板载加速度计(https://punchthrough.com/bean/)计算x轴上的一些粗略角度。问题:我计算的所有东西都会返回0或-1。所以我显然要么做错了,要么转错了。我不确定是什么。以为我会在这里发帖,看看是否有人有任何建议。 Bean文档说使用int16_t但它们有时也使用uint16_t或int。不知道该怎么做。感谢。

void setup()
{
    Serial.begin(57600);

}

void loop()
{   

    AccelerationReading currentAccel = Bean.getAcceleration(); 

    float xAng = makeXAngles(currentAccel);
    String stringMaster = String();
    stringMaster = stringMaster + "X-Angle: " + xAng;
    Serial.println(stringMaster);
   Bean.sleep(100);
}


float makeXAngles(AccelerationReading one) {

    float x1 = one.xAxis;
    float y1 = one.yAxis;
    float z1 = one.zAxis;


    float x2 = x1 * x1;
    float y2 = y1 * y1;
    float z2 = z1 * z1;

    float result;
    float accel_angle_x;

    // X-Axis
    result = sqrt(y2+z2);
    result = x1/result;
    accel_angle_x = atan(result);

    // return the x angle
    return accel_angle_x;
}

1 个答案:

答案 0 :(得分:0)

除了小问题,比如在int y2 = y1 * y2;使用未初始化的变量, 您正在使用int变量进行角度的明显浮点计算,该计算应该是弧度的小数(通过使用的计算尝试暗示)。你需要在这里使用float或double precision变量。