problème avec sprintf

Bonjour,
pour un projet , j'ai besoin d'affiché différente info de type différent sur un écran tft , pour simplifié , je passe par sprintf , et je me retrouve avec un truc étrange:
si je tente d'afficher un int et un string... le string ne s'affiche pas.

exemple :
"sprintf(affichage_module2,"L:%d P:%s hPa",luminosite,temp3)"

m'affiche:
"L:124 P: hPa"

Si j’enlève le %d , (et luminosite) le string s'affiche bien :s

voici le code complet:

// variable pour test affichage
int jour=30;
int mois=04;
int annee=16;
int heure=19;
int minute=20;
int seconde=30;
long delai_maj=60000;//toutes les minutes
long derniere_maj_info=0;
long derniere_maj_heure=0;
char *nom_module[]={"Salon","Exterieur","Cuisine","Chambre1","Chambre2"};
  int numDuModule=0;
  float temperature=20.35;
  float humidite=102.3;
  long luminosite=124;
  double pression=1025.63;
  bool pluie=0;

void setup() {
Serial.begin(9600);
char date_heure[18];
 sprintf(date_heure,"%2d/%2d/%2d  %2d:%2d:%2d",jour,mois,annee,heure,minute,seconde);
 Serial.println(date_heure);//tft.print(date_heure);
 //affichage des modules
 char affichage_module1[30];
 char affichage_module2[30];
 char temp[6];
 char temp2[7];
 char temp3[5];
 dtostrf(pression,7,2,temp3);
 Serial.println(temp3);
 dtostrf(temperature,5,2,temp);
 dtostrf(humidite,6,1,temp2);
 sprintf(affichage_module1,"%s:T:%s dC H:%s%% ",nom_module[numDuModule],temp,temp2);
 sprintf(affichage_module2,"L:%d P:%s hPa",luminosite,temp3);// Pluie
 Serial.println(affichage_module1);
 Serial.println(affichage_module2);
}

void loop() {
  // put your main code here, to run repeatedly:

}

Merci d'avance

Bonjour

Luminosite est un long, le format est ld

sprintf(affichage_module2,"L:%ld P:%s hPa",luminosite,temp3)

Merci , j'ai pensé a vérifier plein de chose.. mais pas a ca :s