我试图从浅蓝色豆子上的板载加速度计(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;
}
答案 0 :(得分:0)
除了小问题,比如在int y2 = y1 * y2;
使用未初始化的变量,
您正在使用int
变量进行角度的明显浮点计算,该计算应该是弧度的小数(通过使用的计算尝试暗示)。你需要在这里使用float或double precision变量。