【LCD12864】发个很多朋友都能用的上的东西,int转char,用于12864显示数值~
很多人在玩12864的时候,都会发现不能直接显示字符,因为大多数12864类库没有显示数值的函数,那么我们就需要把int型变量转换成字符串,方法很简单,只要在代码末尾加上一个功能函数即可~char* itostr(char *str, int i)
{
sprintf(str, "%d", i);
return str;
}
把上述代码放入程序末尾,在程序头定义一个char(ep.char a),在读取完数值之后就可以轻松的用一行itostr(a,b);来转换,其中a是之前定义的char,b是数值变量,是不是很方便呢?
上个演示图,图为mini12864以及iRemote
这几天玩电子秤,用到double转string,可以直接调用。转自网上李鑫的blog,有链接,我在1.05测试通过。串口打印“131.24”/*
http://www.lixin.me/blog/2013/04/21/29713
如果尝试使用sprintf()函数在arduino上进行对float指转换为一个字符串的话,你会发现,it doesn’t work。弄了很久,还以为是没学c++的原因。其实在arduino上,这个函数就是不对float起作用。
替代的方法是使用dtostrf()函数。
char* dtostrf(double _val,signed char _width, unsigned char prec, char* _s)
_val:要转换的float或者double值。
_width:转换后整数部分长度。
_prec:转换后小数部分长度。
_s:保存到该char数组中。
*/
void setup() {
Serial.begin(9600);
}
void loop() {
double test = 131.23789;
char test2 ;
dtostrf(test,4,2,test2);
Serial.println(test2);
delay(1000);
}
好帖顶一个 不错啊~这个12864和5110显示上的区别大吗? 很好很强大!!! 本帖最后由 瘦网虫 于 2013-4-18 12:51 编辑
int转string可以用
string(123456789)直接转。
======================================
附一个double转string的,感谢群里的@厦门-学长
测试未通过奇怪了。
void setup() {
// put your setup code here, to run once:
double test = 1.23;
char test2 ;
dtostr(test2,test);
}
void loop() {
// put your main code here, to run repeatedly:
}
char* dtostr(char *str, double d)
{
sprintf(str, "%f", d);
return str;
}
$money = 123.1
$formatted = sprintf ("%06.2f", $money); // 此时变数 $ formatted 值为 "123.10"
$formatted = sprintf ("%08.2f", $money); // 此时变数 $ formatted 值为 "00123.10"
$formatted = sprintf ("%-08.2f", $money); // 此时变数 $ formatted 值为 "123.1000"
$formatted = sprintf ("%.2f%%", 0.95 * 100); // 格式化为百分比
%08.2f 解释:
%开始符
0是 "填空字元" 表示,如果长度不足时就用0来填满。
8格式化后总长度
2f小数位长度,即2位
第3行值为"00123.10" 解释:
因为2f是(2位)+小数点符号(1位)+前面123(3位)=6位,总长度为8位,故前面用[填空字元]0表示,即00123.10
第4行值为"123.1000" 解释:
-号为反向操作,然后填空字元0添加在最后面了 简直就是神器啊 不错哈,学习了哦 C本来就有内置函数 itoa()可以用啊~ :lol:lol:lol:lol:lol:lol:lol:lol:lol:lol 沧海笑1122 发表于 2014-4-21 00:12 static/image/common/back.gif
这几天玩电子秤,用到double转string,可以直接调用。转自网上李鑫的blog,有链接,我在1.05测试通过。串口打 ...
这个非常好啊,但有一个疑问,比如就说这个131.23789,小数位是5位,如果转换位小于5位显示都正常,但如果转换5位时(也就是小数位全部转换时),转换出来的最后一位比原来的小1,如131.23789小数位全部转换出来就是131.23788,如果是131.2378,小数位全部转换出来就是131.2377,这是个什么原理? 本帖最后由 沧海笑1122 于 2014-5-10 21:53 编辑
hlzero 发表于 2014-5-10 11:16 static/image/common/back.gif
这个非常好啊,但有一个疑问,比如就说这个131.23789,小数位是5位,如果转换位小于5位显示都正常,但如果 ...
我只是使用,电子秤也没有用到五位。不影响用吧。如果深究那要研究库了,如有收获跟贴分享一下吧。 沧海笑1122 发表于 2014-4-21 00:12 static/image/common/back.gif
这几天玩电子秤,用到double转string,可以直接调用。转自网上李鑫的blog,有链接,我在1.05测试通过。串口打 ...
可不可以看一下你的电子秤? 沧海笑1122 发表于 2014-4-21 00:12 static/image/common/back.gif
这几天玩电子秤,用到double转string,可以直接调用。转自网上李鑫的blog,有链接,我在1.05测试通过。串口打 ...
学习了 好帖顶一个
页:
[1]
2