gpt4 book ai didi

c - 检测磁性编码器是否经过 360 度或 0 度以及哪个方向(翻转/环绕方向?) - C

转载 作者:行者123 更新时间:2023-12-02 09:12:19 25 4
gpt4 key购买 nike

我使用磁性编码器,它对手动输入使用react。转弯时,它会计算角度,并且该部分工作完美。这意味着如果我将编码器旋转 360 度,角度就会重置。 (因此又是 0)。但是,我想检测编码器是否已经通过 360 并返回到 0,或者是否从 0 回到 360。我需要知道编码器以 30 度为步长转动哪个方向。

所以:我如何知道编码器是否按顺时针方向转动(从 0 -> 360 -> 0 -> 360 转动 fx.),还是按逆时针方向转动(从 360 转动 fx. -> 0 -> 360 -> 0)

现在,它将从 360 到 0 的步骤视为逆时针旋转,而实际上它是顺时针旋转...

有什么建议吗?

最佳答案

由于磁性编码器一次可以转动超过 180 度(尽管不太可能),因此从技术上讲不可能知道它转动的方向,因为例如。顺时针旋转 90 度也可能是逆时针旋转 270 度。

如果您的磁性编码器没有指示旋转方向,您能做的最好的就是猜测(例如,最短距离 - 即顺时针 90 度更有可能比逆时针 270 度),但您可能会有时会出错。

如果这是可以接受的,那么相对容易做到(假设整数角度在 0 到 360 之间):

int rotation_angle(int old_angle, int new_angle) {
int result = (360 + new_angle - old_angle) % 360;
return (result > 180) ? result - 360 : result;
}

然后:

printf("%d\n", rotation_angle(0, 330)); // prints : -30
printf("%d\n", rotation_angle(330, 0)); // prints : 30

关于c - 检测磁性编码器是否经过 360 度或 0 度以及哪个方向(翻转/环绕方向?) - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50833008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com