Tableau de configuration

Bonjour,

Je cherche a regrouper des valeurs dans une même variable:

struct config_t
{
  // Mode
  int mode;
  
  // Temperature
  int temperatureSolActivation;  // Activer le cordon chauffant
  int temperatureSol;            // Temperature pour le sol en degree
  int temperatureSolTolerance;   // Tolerance pour le sol +-0.1
  int temperatureEauActivation;  // Activer le chauffage eau
  int temperatureEau;            // Temperature de l'eau en degree
  float temperatureEauTolerance;   // Tolerance pour le chauffage eau +-0.1
  int temperaturePriorite;       // Priorite 0=aucune, 1=sol, 2=eau
  int temperaturePrioriteDelai;  // temps pour la priorite en minute
 
} configuration;

void configuration_reset() {
  
  // configuration par default
  configuration.mode = 1;
  configuration.temperatureSolActivation = 1;
  configuration.temperatureSol = 25;
  configuration.temperatureSolTolerance = 1;
  configuration.temperatureEauActivation = 0.10;
  configuration.temperatureEau = 24;
  configuration.temperatureEauTolerance = 1;
  configuration.temperaturePriorite = 1;
  configuration.temperaturePrioriteDelai = 2;
}

void setup() {
 
  configuration_reset();

  // on initialise l'ecran LCD
  lcd.begin(16, 4);
  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print(configuration.temperatureEauTolerance);
  delay(5000);
}

void loog() {

}

dans cet exemple, j'affiche temperatureEauTolerance et il devrait me retourner 0.1, mais il me retourne 1.00
Pouvez vous m'expliquer mon erreur ?

Je vous remercie d'avance.

Bonjour,

la fonction lcd.print n'est pas prévu pour afficher des float (cf LiquidCrystal - Arduino Reference).

N'ayant pas de lcd, je ne peux pas vérifier mais

lcd.printf("Tolerance: %.1f\n", configuration.temperatureEauTolerance);

devrait marcher

Serge

Merci pour ta réponse.

j'ai un message d'erreur:

In function 'void setup()':
error: 'class LiquidCrystal' has no member named 'printf'

printf ne semble pas exister.
Peux tu me le copier pour que l je l'ajoute a LuidCrystal.cpp

Merci d'avance.

J'ai essayé avec ça

int test = printf("Tolerance: %1f\n", configuration.temperatureEauTolerance);
lcd.print(test);

Le lcd affiche -1

arf... je ne comprend pas tout, c'est pas evident de jongler avec les types de variable...

Printf retourne un string et non un int

essaye :

lcd.print(printf("Tolerance: %1f\n", configuration.temperatureEauTolerance));

Serge

En fait, si lcd.print(configuration.temperatureEauTolerance) me retourne bien 0.10

je me suis bêtement planté et surtout mal relu !
j'ai mis la tolérance à 1 et l'activation à 0.10, j'ai inversé ^^

Merci pour l'aide ^^

Par contre le lcd.printf m’intéresse, c'est pratique pour formater une chaîne a afficher

Merci d'avance.

    lcd.setCursor(0, 0);
    lcd.print(configuration.temperatureEauTolerance); // m'affiche 0.10
    lcd.setCursor(0, 1);
    lcd.print(printf("Tolerance: %1f\n", configuration.temperatureEauTolerance)); // m'affiche -1
    delay(5000);