为什么这个角度计算 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
变量进行角度的明显浮点计算,它应该是以弧度为单位的小数(由使用的计算尝试暗示)。您需要在此处使用浮点或双精度变量。
我正在尝试通过浅蓝色豆 (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
变量进行角度的明显浮点计算,它应该是以弧度为单位的小数(由使用的计算尝试暗示)。您需要在此处使用浮点或双精度变量。