Problemi nell'utilizzo di stringhe in librerie esterne

#ifndef SENSORI_H_
#define SENSORI_H_

#include <Arduino.h>

class Sensori 
{ //sensori da leggere
  float light;
  float temperature;
  float altitude;
  //int humidity; int pressure; bool rain;
  static int cont;
public:
  Sensori();
  void  getSensori(char buf[],byte bufsize);
  float getTemperature() { return temperature; }
  float getAltitude()    { return altitude; }
  float getLight()       { return light; }
  int   getCont()        { return cont; }
};
#endif /* SENSORI_H_ */

int Sensori::cont = 0;

Sensori::Sensori() 
{ temperature=20+cont;
  light=12+cont;
  //humidity=3+cont; pressure=1000+cont; rain= (cont%2)==0 ? true : false;
  altitude=120+cont;
  cont++;
}

void Sensori::getSensori(char buf[],byte bufsize)
{ char tmpt[5],tmpa[5],tmpl[5];
  dtostrf(altitude   , 2, 1, tmpa);
  dtostrf(temperature, 2, 1, tmpt);
  dtostrf(light      , 2, 1, tmpl);
  snprintf(buf,bufsize,"temp=%s lum=%s alt=%s",tmpt,tmpl,tmpa);
}

void setup()
{ delay(1000);  
  Serial.begin(9600); //stabilisco una connessione con il pc
  Serial.println("Inizializzazione"); 
}

void loop()
{ char buffer[40];
  Sensori obj;
  obj.getSensori(buffer,sizeof(buffer));
  Serial.println(buffer);    
  delay(3000);
}
Inizializzazione
temp=20.0 lum=12.0 alt=120.012.0
temp=21.0 lum=13.0 alt=121.013.0
temp=22.0 lum=14.0 alt=122.014.0
temp=23.0 lum=15.0 alt=123.015.0
temp=24.0 lum=16.0 alt=124.016.0