У меня есть следующий код для эскиза Arduino:
#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"
Есть идеи, в чем проблема?