のマークを問う:アルドゥイーノ:printfの/ fprintfのプリントは、私は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 Volts"を出力する代わりに、 "?Volts"(実際の浮動小数点値の代わりに疑問符)を出力します。私が整数をフォーマットしようとすると、これはうまくいきます。
私は、次のとprintfのラインを交換するのであれば基本的には、それが正常に動作します:
printf("%d Volts", 2); //prints correctly "2 Volts"
問題何任意のアイデアを? avr-libc
documentationから
易しく書き直さダウンSTDLIB浮動小数点数の変換は処理できませんか? @DanielFischer正確に。 –
。 –
面白いことは、単にlcd.print(2.0)を実行すれば、あなたが望むものを正確に印刷できるということです。 sprintfの必要はありません。また、オプションの第2パラメータを使用して小数点以下の桁数を指定することもできます。例えば。 lcd.print(2,3)はあなたに "2.000"を与えます。 –