Capteur de force + HX711 + Nokia 5110 - Problème affichage de poids

Bonjour à toutes et à tous !

Dans le cadre d'un projet d'amélioration continu dans mon entreprise, je suis en train de concevoir une "balance" afin de contrôler le poids de nos produits sur un convoyeur horizontal.

Cette balance sera composé d'un châssis, d'un Arduino Mega, d'un capteur de force 5Kg qui évoluera vers un 20 KG par la suite, d'un Amplificateur HX711 et pour finir un écran Nokia 5110.

Après avoir regarder de nombreux tutos en Anglais sur des projets similaires, j'ai récupéré quelques bouts de codes qui ont l'aire de passer le compilateur jusqu'à ce que je demande l'affichage d'une variable de type "Float" obtenue grâce à LoadCell.getData.

Bien mieux que des mots, je vous expose le code de ma console et au dessous le code erreur du compilateur : (l'erreur apparaît à la toute dernière du code ci-dessous "lcd.print(i)")

// (c) Michael Schoeffler 2017, http://www.mschoeffler.de
#include <HX711_ADC.h> // https://github.com/olkal/HX711_ADC
#include <Wire.h>
#include <Nokia_LCD.h>

HX711_ADC LoadCell(4, 5); // parameters: dt pin, sck pin<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>
Nokia_LCD lcd(8 /* CLK */, 9 /* DIN */, 10 /* DC */, 12 /* CE */, 11 /* RST */);
void setup() {
  LoadCell.begin(); // start connection to HX711
  LoadCell.start(2000); // load cells gets 2000ms of time to stabilize
  LoadCell.setCalFactor(999.0); // calibration factor for load cell => strongly dependent on your individual setup
  lcd.begin(); // begins connection to the LCD module
}
void loop() {
  LoadCell.update(); // retrieves data from the load cell
  float i = LoadCell.getData(); // get output value
  lcd.setCursor(0, 0); // set cursor to first row
  lcd.print("Poids [g]:"); // print out to LCD
  lcd.setCursor(0, 1); // set cursor to secon row
  lcd.print(i); // print out the retrieved value to the second row
}

l'erreur :

****\Documents\Arduino\sketch_jan21a\sketch_jan21a.ino: In function 'void loop()':

sketch_jan21a:21:18: error: call of overloaded 'print(float&)' is ambiguous

In file included from ****\Documents\Arduino\sketch_jan21a\sketch_jan21a.ino:5:0:

****\Documents\Arduino\libraries\Nokia_5110_LCD_library\src/Nokia_LCD.h:80:10: note: candidate: bool Nokia_LCD::print(int)

     bool print(int number);

          ^

****\Documents\Arduino\libraries\Nokia_5110_LCD_library\src/Nokia_LCD.h:81:10: note: candidate: bool Nokia_LCD::print(unsigned int)

     bool print(unsigned int number);

          ^

****\Documents\Arduino\libraries\Nokia_5110_LCD_library\src/Nokia_LCD.h:82:10: note: candidate: bool Nokia_LCD::print(long int)

     bool print(long number);

          ^

****\Documents\Arduino\libraries\Nokia_5110_LCD_library\src/Nokia_LCD.h:83:10: note: candidate: bool Nokia_LCD::print(long unsigned int)

     bool print(unsigned long number);

          ^

exit status 1
call of overloaded 'print(float&)' is ambiguous

L'écran m'affiche bien le "Poids [g]" lorsque je supprime lcd.print(i); mais lorsque je remet cette ligne, le code reviens...

j'ai voulu essayer de voir si le HX711 répondait bien en réalisant la méthode proposée par Artouste sur un topic du 19/12/2017 à la réponse N°11 ( Balance avec arduino et capteurs de force - Français - Arduino Forum ) mais je n'ai pas compris sa manipulation. Faut il un multimètre ?

J'ai quelques notions en codage mais là, je suis bloqué... Y a t'y quékun qui peut m'aider ? :grinning:

Par avance, merci !

Bonjour,

La méthode print ne prend pas les float (sur les processeurs AVR).
Si tu veux l'afficher il faut convertir en chaine de caractère. Par exemple en utilisant dtostrf()

C'est plutôt la librairie NOKIA 5110 qui ne prend pas les float en paramètre.
Elle n'hérite pas de la classe Print, comme pas mal de librairies mieux faites.

La classe Print sait le faire :

    size_t print(double, int = 2);

Mais un petit dtostrf() devrait résoudre effectivement.

@+