Problemi con floatTostring

Buona sera,
mi capita un problema magari semplicissimo.. usando il comando floatToString converto il valore di un orologio per scriverlo un uno schermo Nextion, funziona tutto tranne che i minuti me li scrive singoli cioè esempio 20: 8, ora vorrei sapere come potrei fare a scrivere 20:08 con lo zero sui decimali.
Grazie mille a tutti.. se necessario posto lo sketch

se minuti <10
scrivi 0
scrivi minuti

Hai tre possibilità in base a come hai disegnato l’interfaccia su Nextion, ovvero puoi usare tre oggetti, due numerici e un testo, con il primo numerico visualizzi le ore, con in testo visualizzi il carattere ‘:’ e con l’altro numerico visualizzi i minuti.
Su nextion un oggetto number ha la sua lunghezza, se la setti a due e il valore è 8 ti visualizza in automatico 08.
Se invece su nextion usi un solo oggetto text allora puoi inviare al nextion i valori separati su due variabili numeriche e usare un timer su nextion per aggiornare l’oggetto stringa che visualizza le ore partendo dai valori delle variabili con la funzione cov o ancora meglio covx
cov page0.nMin.val,page0.txtBuf.txt,2
anche qui con l’ultimo parametro hai la lunghezza e ti riempi di zeri iniziali in automatico.
Ultima possibilità è agire da codice Arduino e usare la funzione sprintf e formattarti la stringa prima di inviarla

Dipende da come hai generato quel float.
Ma se invii 20.8 è normale che la stringa ti venga 20 8, dovresti inviare 20.08

Lo sketch si presenta così:

[/[code]
#include  "Nextion.h"  
#include "RTClib.h"
#include "floatToString.h"

NexText nex_ore  = NexText(0, 2, "t0");
NexText nex_min  = NexText(0, 1, "t1");
NexText nex_day  = NexText(0, 4, "t3");
NexText nex_mon  = NexText(0, 5, "t4");
NexText nex_yea  = NexText(0, 6, "t5");

char txt1[10];
char txt2[10];
char txt3[10];
char txt4[10];
char txt5[10];

char buffer1[20];
char buffer2[20];

const int setpin = 6;
boolean statepin = 0;

RTC_DS1307 RTC;

void setup() {
  nexInit();
  pinMode(6, OUTPUT);
  digitalWrite(6, HIGH);
  RTC.begin();
  if (! RTC.isrunning()) {
   RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}


void loop() {
  statepin = digitalRead(setpin);

 if (statepin == LOW)
 {
  RTC.adjust(DateTime(__DATE__, __TIME__));
 }
  DateTime now = RTC.now();
  sprintf(buffer1,  "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
  sprintf(buffer2,  "%02d/%02d/%d", now.day(), now.month(), now.year());

  nex_ore.setText(txt1);   //ore nex

   memset(txt1, 0, sizeof(txt1)); 
   floatToString(txt1,now.hour(),0,2);

   nex_min.setText(txt2),":";   //min nex

   memset(txt2, 0, sizeof(txt2)); 
   floatToString(txt2,now.minute(),0,2);

   
   nex_day.setText(txt3);   //giorno nex

   memset(txt3, 0, sizeof(txt3)); 
   floatToString(txt3,now.day(),0,2);

   nex_mon.setText(txt4);   //mese nex

   memset(txt4, 0, sizeof(txt4)); 
   floatToString(txt4,now.month(),0,2);

   nex_yea.setText(txt5);   //anno nex

   memset(txt5, 0, sizeof(txt5)); 
   floatToString(txt5,now.year(),0,4);

}

code]

Allora devo cambiarle tutte le righe di scrittura?