avr-libcのマニュアルを読むと使えるような記述がありますが、残念ながら、Arduino Unoのsprintf()では、%fを使うことができないようです。
char szbuf[200];
sprintf(szbuf,"Pressure(kPa)=%.2f, Altitude(m)=%.2f\r\n", prs, alt);
を実行するとszbufにはPressure(kPa)=%.2f, Altitude(m)=%.2f\r\n
がセットされ、それがudpLoggerに送信され、microSDに保存された。
整数で処理するしかないのだろうか。
http://playground.arduino.cc/Main/Printf には%fを使っているようだ。
未消化。
以下のようにした (間違っているかもしれない)。
void UdpTxAltitude(float prs)
{
float alt;
alt = calcAltitude(prs, kAltitudeCorrection);
char szbuf[200];
int pos = 0;
int whl, frac; // whole and fractional parts
// 1. pressure
whl = (int)prs;
frac = (int)(prs*100) % 100;
pos = sprintf(&szbuf[pos],"Pressure(kPa)=%d.%02d", whl, frac);
// 2. altitude
whl = (int)alt;
frac = (int)(alt*100) % 100;
pos = sprintf(&szbuf[pos],",Altitude(m)=%d.%02d\r\n", whl, frac);
WiFi_txMessage(szbuf);
}
(追記 2016/06/03) @mt08 さんに dtostrf() という関数の情報とリンクを教えていただきました。