Problemi nell'utilizzo di stringhe in librerie esterne

Primo, hai dichiarato Sensori obj; nella loop()
La loop() viene eseguita di continuo. Essendo l'oggetto dichiarato in quella funzione, ogni volta che la loop() viene eseguita l'oggetto nasce e muore.
Secondo, usi dtostr() e fai dei return con funzioni il cui valore di ritorno li dichiari String. dtostr() e String non c'entrano nulla l'una con l'altra. dtostr() ritorna un char* e non un String (che è un oggetto della classe String, molto pesante per una MCU con soli 2Kb di SRAM)
http://www.atmel.no/webdoc/AVRLibcReferenceManual/group__avr__stdlib_1ga060c998e77fb5fc0d3168b3ce8771d42.html