我有一個Arduino草圖下面的代碼:的Arduino:printf的/打印fprintf中的問號,而不是浮
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
static FILE lcdout = {0} ;
static int lcd_putchar(char ch, FILE* stream)
{
lcd.write(ch) ;
return (0) ;
}
void setup() {
lcd.begin(16, 2);
fdev_setup_stream (&lcdout, lcd_putchar, NULL, _FDEV_SETUP_WRITE);
}
void loop()
{
stdout = &lcdout;
printf("%.2f Volts", 2.0);
}
這個問題是在代碼的最後一行。這應該打印出「2.00伏特」,而是打印「伏特」(問號而不是實際的浮點值)。如果我嘗試格式化一個整數,這很好。
所以基本上,如果我用下面的替換printf的線,它會正常工作:
printf("%d Volts", 2); //prints correctly "2 Volts"
任何想法有什麼問題呢?
一個簡單化向下STDLIB無法處理浮點轉換? –
@DanielFischer沒錯。 – 2013-01-03 20:40:01
有趣的是,如果你只是做一個lcd.print(2.0)它會打印你想要的。不需要sprintf或其他任何。並且您可以使用可選的第二個參數指定小數點右邊的位數。例如。 lcd.print(2,3)會給你「2.000」。 –