智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2092|回复: 7
打印 上一主题 下一主题

[分享] 分享个能代替反正弦的小程序。

[复制链接]

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章资源大师奖章

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
跳转到指定楼层
1#
发表于 2012-9-24 21:03:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是前两天电赛的时候写的,计算范围是-90到90,因为这个程序主要是液晶显示我在原程序的基础上做了下修改(在记事本里改的可能有错误),虽然手段比较低级不过还挺好用。
//////////////此程序用于液晶显示将计算的angle除以10才是真实角度///////
int anglejust(float jiaodu)
{
  unsigned char i;
  if(jiaodu<0)
{
    jiaodu=-jiaodu;
    i=1;
  }
  if(jiaodu>0)
    i=0;
  if(jiaodu>=0 && jiaodu<0.0871)
    angle=(int)(jiaodu/0.0871*5*10);
  else if(jiaodu>=0.0871 && jiaodu<0.1736)
    angle=(int)(((jiaodu-0.0871)/0.0865*5+5)*10);
  else if(jiaodu>=0.1736 && jiaodu<0.2588)
    angle=(int)(((jiaodu-0.1736)/0.0852*5+10)*10);
  else if(jiaodu>=0.2588 && jiaodu<0.3420)
    angle=(int)(((jiaodu-0.2588)/0.0832*5+15)*10);
  else if(jiaodu>=0.3420 && jiaodu<0.4226)
    angle=(int)(((jiaodu-0.3420)/0.0806*5+20)*10);
  else if(jiaodu>=0.4226 && jiaodu<0.5000)
    angle=(int)(((jiaodu-0.4226)/0.0774*5+25)*10);
  else if(jiaodu>=0.5000 && jiaodu<0.5735)
    angle=(int)(((jiaodu-0.5000)/0.0735*5+30)*10);
  else if(jiaodu>=0.5735 && jiaodu<0.6428)
    angle=(int)(((jiaodu-0.5735)/0.0693*5+35)*10);
  else if(jiaodu>=0.6428 && jiaodu<0.7071)
    angle=(int)(((jiaodu-0.6428)/0.0643*5+40)*10);
  else if(jiaodu>=0.7071 && jiaodu<0.7660)
    angle=(int)(((jiaodu-0.7071)/0.0589*5+45)*10);
  else if(jiaodu>=0.7660 && jiaodu<0.8191)
    angle=(int)(((jiaodu-0.7660)/0.0531*5+50)*10);
  else if(jiaodu>=0.8191 && jiaodu<0.8660)
    angle=(int)(((jiaodu-0.8191)/0.0469*5+55)*10);
  else if(jiaodu>=0.8660 && jiaodu<0.9063)
    angle=(int)(((jiaodu-0.8660)/0.0403*5+60)*10);
  else if(jiaodu>=0.9063 && jiaodu<0.9396)
    angle=(int)(((jiaodu-0.9063)/0.0333*5+65)*10);
  else if(jiaodu>=0.9396 && jiaodu<0.9659)
    angle=(int)(((jiaodu-0.9396)/0.0263*5+70)*10);
  else if(jiaodu>=0.9659 && jiaodu<0.9848)
    angle=(int)(((jiaodu-0.9659)/0.0189*5+75)*10);
  else if(jiaodu>=0.9848 && jiaodu<0.9962)
    angle=(int)(((jiaodu-0.9848)/0.0114*5+80)*10);
  else if(jiaodu>=0.9962 && jiaodu<1)
    angle=(int)(((jiaodu-0.9962)/0.0038*5+85)*10);
  else if(jiaodu>=1)
    angle=900;
  if(i==1)
    angle=-angle;
  return angle;
}

18

主题

514

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3536
威望
1671
贡献
921
兑换币
128
注册时间
2009-3-14
在线时间
472 小时
2#
发表于 2012-9-24 22:00:36 | 只看该作者
至于吗,直接查表好了
回复 支持 反对

使用道具 举报

37

主题

358

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3787
威望
1857
贡献
918
兑换币
704
注册时间
2012-3-12
在线时间
506 小时
3#
发表于 2012-9-24 23:12:53 | 只看该作者
额·~~这个。。。
回复 支持 反对

使用道具 举报

42

主题

1450

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
8643

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
4293
贡献
2166
兑换币
2108
注册时间
2011-10-20
在线时间
1092 小时
4#
发表于 2012-9-25 00:03:06 | 只看该作者
回复 支持 反对

使用道具 举报

66

主题

2229

帖子

4

精华

超级版主

Rank: 10Rank: 10Rank: 10

积分
17281

论坛元老奖章

威望
8767
贡献
3040
兑换币
4153
注册时间
2011-8-7
在线时间
2737 小时
5#
发表于 2012-9-25 00:22:15 | 只看该作者
叶子一哥 发表于 2012-9-25 00:03


回复 支持 反对

使用道具 举报

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章资源大师奖章

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
6#
 楼主| 发表于 2012-9-25 16:50:34 | 只看该作者
perfect_co 发表于 2012-9-24 22:00
至于吗,直接查表好了

我试过不是很好用,可能是弄得有问题。大哥教教我呗,别嫌我笨。
回复 支持 反对

使用道具 举报

18

主题

514

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3536
威望
1671
贡献
921
兑换币
128
注册时间
2009-3-14
在线时间
472 小时
7#
发表于 2012-9-25 17:56:38 | 只看该作者
qinlu123 发表于 2012-9-25 16:50
我试过不是很好用,可能是弄得有问题。大哥教教我呗,别嫌我笨。

把函数结果按等分点做成数组(表格),比如128点的表格,然后一个周期内要查哪个点,直接查数组不就行了,有时要查的点不正好是0~127,这是可以采用映射手段,或者取舍方法来查表,虽然会有误差,但当表中点数多时,这个误差可以忽略。
回复 支持 反对

使用道具 举报

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章资源大师奖章

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
8#
 楼主| 发表于 2012-9-25 18:37:55 | 只看该作者
perfect_co 发表于 2012-9-25 17:56
把函数结果按等分点做成数组(表格),比如128点的表格,然后一个周期内要查哪个点,直接查数组不就行了, ...

好办法。
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 02:05 , Processed in 0.193658 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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