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

Why does this angle calculation return only values of 0 or -1?

我正在尝试通过浅蓝色豆 (https://punchthrough.com/bean/) 上的板载加速度计计算 x 轴上的一些粗略角度。问题:我计算的所有结果都返回 0 或 -1。所以我显然要么传递错误,要么转换错误。我不确定是什么。我想我会 post 在这里看看是否有人有建议。 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;
}

除了小问题,比如这里使用了未初始化的变量int y2 = y1 * y2;, 您正在使用 int 变量进行角度的明显浮点计算,它应该是以弧度为单位的小数(由使用的计算尝试暗示)。您需要在此处使用浮点或双精度变量。