Question sur la fonction lcd.print()

bonjour à tous,

étant nouveau sur arduino je rencontre un problème tiens donc !! étonnant!! vous allez me dire …

après d’infructueuse mais minutieuse recherche ( 1 semaine que je me farci la trogne avec LES pages de google ( oui j’ai découvert il a quelques années qu’il y avait plusieurs pages de résultat sur google ) je me tourne vers la sagesse de mes pairs pour m’éviter la rupture de l’os prefrontal des suites d’une chute sur le clavier.

trêve de plaisanteries voila le code minimal alias le mur :

#include <LiquidCrystal.h>
#include <Wire.h>

const char* progName[5] = {"Prog1", "Prog2", "Prog3", "Prog4", "Prog5"};

struct ProgInfo {                                                           // array prog = ProgName + Feed time + feed time duration
  const char* progName;
  unsigned int Hour;                            // struct for feedtime = hour & min
  unsigned int Min;
  int FTD;                                                   // feed time duration
} Pr[5];

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);    // PIN connected on arduino


void setup() {
  lcd.begin(16,2);
  lcd.print("%s = %2d sec, %2d:%2d", Pr[4].progName, Pr[4].Hour, Pr[4].Min);
}

et bien sur la raison de l’anévrisme :

/Users/darthjuda/Documents/Arduino/sketch_jun21a/sketch_jun21a.ino: In function 'void setup()':
sketch_jun21a:18: error: no matching function for call to 'LiquidCrystal::print(const char [22], const char*&, unsigned int&, unsigned int&)'
   lcd.print("%s = %2d sec, %2d:%2d", Pr[4].progName, Pr[4].Hour, Pr[4].Min);
                                                                                                                 ^

je vous en prie devenez le bon samaritain qui m’expliquera pourquoi je ne peux pas passer en arguments mes pointeurs dans la fonction lcd.print ???
qui ai-je contrarier ? le compiler, K&R , l’arduino , l’univers ?

Bonjour,

lcd.print() ne fait pas un affichage formaté. Voir la description. Si tu veux un affichage formaté, il faut utiliser sprintf()

merci à vous les gars !!! Problème résolu ( de manière un peu tordu vu ce que PePe a montrer :confused: )

@Kamill : merci beaucoup c'est toi qui m'as permis de comprendre !! @PePe : merci beaucoup de m'avoir expliquer ma sottise, je programme en C et en objective C donc l'arduino est encore parfois trop subtile pour moi (ou je suis trop abrupte pour lui :) )

je poste quand meme histoire de comparer si ca peut servir à d'autre :

// Partie Déclaration 

static FILE lcdout = {0} ;      // LCD FILE structure

static int lcd_putchar(char ch, FILE* stream)
{
  lcd.write(ch) ;
  return (0) ;
}
// dans le  void setup

fdev_setup_stream (&lcdout, lcd_putchar, NULL, _FDEV_SETUP_WRITE);

et enfin la fonction

fprintf(&lcdout, "%s = %2d sec, %2d:%2d", Pr[0].progName, Pr[0].FTD, Pr[0].Hour, Pr[0].Min);

voilà ... bien sur votre opinion m'intéresse mais sachez qu'il est important pour la suite des événements de pouvoir envoyer une fonction présentez sous la forme : "%s = %2d sec, %2d:%2d", Pr[0].progName, Pr[0].FTD, Pr[0].Hour, Pr[0].Min

Merci encore à tous et si je peux rendre l'appareil n'hésitez pas --> MP