OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 565|回复: 4

磁力计怎么实现重置当前角度?

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2022-11-18
在线时间
12 小时
发表于 2024-4-25 10:47:53 | 显示全部楼层 |阅读模式
20金钱
例如:当前磁力计的航向角为35°,重置为0后,从这个重置角度(0)向右旋转,一直加(0°~65535°),向左旋转就一直减(0° ~ (-65535°)). (解决私信我有偿.. 谢谢)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2024-4-26 10:26:45 | 显示全部楼层
磁力计的航向角范围是多少?
比如一直高右旋转,磁力计的航向角会如何变化?从0到360后又变成0?还是从0到180后变成-180?
你需要的角度假如一直右旋,超过65535后是限制到65535还是如何处理?
专治疑难杂症
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2022-11-18
在线时间
12 小时
 楼主| 发表于 2024-4-26 10:46:55 | 显示全部楼层
比如现在航向角为0,一直向右转,就一直累加,最大输出65535°,一直向左转就一直累减,最大输出-65535°,现在我的磁力计范围是0-360°旋转,可是程序不知道怎么写才能实现这个功能。比如我的磁力计现在范围旋转到359后下一个就归0了,然后我想就是不归零继续计数,向右边就相减,这样。
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2022-11-18
在线时间
12 小时
 楼主| 发表于 2024-4-26 10:47:36 | 显示全部楼层
贤哥 发表于 2024-4-26 10:46
比如现在航向角为0,一直向右转,就一直累加,最大输出65535°,一直向左转就一直累减,最大输出-65535°, ...

向左边就减,向右边就加
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8204
金钱
8204
注册时间
2020-5-11
在线时间
3697 小时
发表于 2024-4-26 12:14:25 | 显示全部楼层
若要回复我,就点击我所在楼层左下角的 回复,我才能收到提醒。
伪代码示例:
  1. int x0,x1,d;
  2. long y=0;
  3. main()
  4. {
  5. 初始化();
  6. x0=x1=读取航向角();
  7. while(1)
  8. {
  9.   x1=读取航向角();//0~359
  10.   d=x1-x0;//当前与之前的角度差,即增量
  11.   x0=x1;//记录先前的航向角  
  12.   if(d>180)d-=360;//如从0变为359,增量为-1
  13.   if(d<-180)d+=360;//如从359变为0,增量为1
  14.   y=y+d;//增量累加
  15.   if(y<0)y=0;//限制范围
  16.   if(y>65535)y=65535;//限制范围   
  17. }
  18. }
复制代码
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 15:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表