智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: qinlu123
打印 上一主题 下一主题

[其他] 分享一个小工具用小按键和5110液晶来修改所有的参数

    [复制链接]

14

主题

295

帖子

0

精华

常驻嘉宾

打酱油出道。。。

Rank: 8Rank: 8

积分
5865

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

威望
1727
贡献
1258
兑换币
1045
注册时间
2012-11-10
在线时间
1440 小时
41#
发表于 2013-1-15 15:54:15 | 只看该作者
qinlu123 发表于 2013-1-15 15:46
如果你的小数点后有两位,你可以输入一个相应位数的整数在程序里边除以100就行啦,别忘啦用float型保存。

我定义的值用float,调用子函数suzifenjie,就出错了Link error1822,WarningC5919怎么回事
回复 支持 反对

使用道具 举报

14

主题

295

帖子

0

精华

常驻嘉宾

打酱油出道。。。

Rank: 8Rank: 8

积分
5865

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

威望
1727
贡献
1258
兑换币
1045
注册时间
2012-11-10
在线时间
1440 小时
42#
发表于 2013-1-15 16:07:21 | 只看该作者
我想把speed_p,speed_i, angle_p着一些值,初始定义为小数,通过键盘加减,怎么让它数字分解
回复 支持 反对

使用道具 举报

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

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

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
43#
 楼主| 发表于 2013-1-15 16:11:50 | 只看该作者
杀手王旭 发表于 2013-1-15 15:54
我定义的值用float,调用子函数suzifenjie,就出错了Link error1822,WarningC5919怎么回事

shuzifenjie是用来将一个整数的各位拆开用来液晶显示的,你看看shuzifenjie函数所带参数的类型应该是unsigned char型。如果你有一个参数的范围是0.00-1.00,那么程序需要这么写。
unsigned char canshu;//这里把它定义为char型是用来送液晶
float canshu_true;//这才是要真正参与小车算法运算的变量
读取SD内容
调用键盘函数(键盘里边有数据分解和数据显示函数,数据分解要这么写shujufenjie(canshu);)
参数修改好了
canshu_true=canshu/100;
要是不放心就这么写
canshu_true=(float)(canshu/100);

回复 支持 反对

使用道具 举报

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

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

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
44#
 楼主| 发表于 2013-1-15 16:17:42 | 只看该作者
杀手王旭 发表于 2013-1-15 16:07
我想把speed_p,speed_i, angle_p着一些值,初始定义为小数,通过键盘加减,怎么让它数字分解

用键盘直接加减小数并不难,难就难在显示。数字分解目的就是用来为显示服务的,你可以将你定义的小数乘以100(精确都小数点后两位)或1000(精确到小数点后3位)然后以long或int或char型保存,不过要注意数据类型的转换。
回复 支持 反对

使用道具 举报

4

主题

397

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3933
威望
1759
贡献
1014
兑换币
898
注册时间
2012-8-27
在线时间
580 小时
45#
发表于 2013-1-15 16:22:48 | 只看该作者
相见恨晚...好东西...
回复 支持 反对

使用道具 举报

14

主题

295

帖子

0

精华

常驻嘉宾

打酱油出道。。。

Rank: 8Rank: 8

积分
5865

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

威望
1727
贡献
1258
兑换币
1045
注册时间
2012-11-10
在线时间
1440 小时
46#
发表于 2013-1-15 16:30:04 | 只看该作者
void shuzifenjie1(float number1)
{
  unsigned char number11;
  number11=(unsigned char)(number1*10);
  bai1=number11/100;
  shi1=number11%100/10;
  ge1=number11%10;

}这样写错在哪               要分解的是1.00的小数
回复 支持 反对

使用道具 举报

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

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

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
47#
 楼主| 发表于 2013-1-15 16:35:20 | 只看该作者
杀手王旭 发表于 2013-1-15 16:30
void shuzifenjie1(float number1)
{
  unsigned char number11;

这样写是没错的,但是小数点后第二位被忽略掉了。
回复 支持 反对

使用道具 举报

14

主题

295

帖子

0

精华

常驻嘉宾

打酱油出道。。。

Rank: 8Rank: 8

积分
5865

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

威望
1727
贡献
1258
兑换币
1045
注册时间
2012-11-10
在线时间
1440 小时
48#
发表于 2013-1-15 16:40:45 | 只看该作者
怎么解决,我现在执行不出来
回复 支持 反对

使用道具 举报

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

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

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
49#
 楼主| 发表于 2013-1-15 16:43:04 | 只看该作者
杀手王旭 发表于 2013-1-15 16:40
怎么解决,我现在执行不出来

乘100啊如果你想显示小数点后三位就乘1000,但你要记住char最大可以装255超过255就溢出喽。
回复 支持 反对

使用道具 举报

14

主题

295

帖子

0

精华

常驻嘉宾

打酱油出道。。。

Rank: 8Rank: 8

积分
5865

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

威望
1727
贡献
1258
兑换币
1045
注册时间
2012-11-10
在线时间
1440 小时
50#
发表于 2013-1-15 16:53:41 | 只看该作者
改成100,编译 C5919 conversion of floating to unsigned integral;

link error L1822 Symbol fmUL in file  ........ is    undefined
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 02:27 , Processed in 0.114415 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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