在Arduino上使用printf格式化输出到串口

不少朋友尝试在Arduino上使用printf格式化输出,但没有效果。在PC上printf默认输出到屏幕,但arduino不是PC,也没有屏幕,所以不能直接使用。

这里提供一个使用printf输出到串口的方法:



首先在程序中加入这两个函数:

[C++] 纯文本查看 复制代码

int serial_putc( char c, struct __file * )
{
Serial.write( c );
return c;
}
void printf_begin(void)
{
fdevopen( &serial_putc, 0 );
}




接着在setup中完成串口输出的初始化:

[C++] 纯文本查看 复制代码
void setup() {
Serial.begin(115200);
printf_begin();

//其他代码
}





现在你可以尝试下使用printf输出了:

[C++] 纯文本查看 复制代码
int cs=12345;
float cf=12.345;
char c[15]="Hello,world!";

printf("arduino.cn\n\r");
printf("111:%d\n",cs);
printf("222:%lf\n",cf);
printf("333:%s\n",c);
printf("111:%d\n222:%lf\n333:%s\n",cs,cf,c);







以上程序float输出不了,我目前也不知道原因,如果有人知道了,请回复告之我。






via - arduino中文社区

标签: Arduino教程