J'ai réglé mes soucis de librairie et j'ai réussi a écrire des donnés sur la carte SD présente dans mon montage.
Cependant, depuis que j'ai ajouté le module SD dans mon code, l'écran LCD et le capteur de force ne fonctionnent plus, je demande notamment l'affichage d'une ligne de texte dans le void setup, et rien ne se passe, et je peine a comprendre pourquoi, des gens auraient une idée ?
Le code se compile bien et il n'y a "aucune" erreur dedans.
j'ai réussi a écrire des donnés sur la carte SD présente dans mon montage
vous écrivez toujours dans un fichier sans nom qui n'est pas ouvert dans le setup
essayez cela avec le moniteur série à 115200 bauds
//-------------------------------------------------------------------------------------------
//Librairies
#include <LiquidCrystal_I2C.h> // Importe la librairie LiquidCrystal_I2C pour la gestion de l'écran LCD
#include <HX711_ADC.h> // Importe la librairie HX711_ADC pour la gestion de l'amplificateur HX711 et du capteur d'effort
#include <SD.h> // Importe la librairie SD pour permettre la gestion de la carte SD
HX711_ADC LoadCell(4, 5); // Allocation du capteur d'effort sur les broches 4 et 5, paramètres : dt pin, sck pin
LiquidCrystal_I2C lcd(0x27, 16, 2);// Set the LCD address to 0x27 for a 16 chars and 2 line display
File monFichier; // Génération du fichier de données
void setup() {
Serial.begin(115200);
Serial.print("Initialisation de la carte SD en cours..."); // Afficher sur le moniteur série le texte Initialisation de la carte SD en cours ...
if (SD.begin()) { // Si la carte SD est initialisée ...
Serial.println(" Initialisation terminee."); // Afficher sur le moniteur série le texte Initialisation terminée
} else { // Si l'initialisation ne fonctionne pas
Serial.println(" Echec de l'initialisation."); // Afficher sur le moniteur série le texte Echec de l'initialisation
while (true); // on s'arrête ici dans le cas d'un échec de l'intialisation de la carte SD
}
monFichier = SD.open("donnees.csv", FILE_WRITE); // on crée le fichier s'il faut, sinon écrit à la fin du fichier
if (monFichier) {
monFichier.println(F("Valeur d'effort")); // Affiche le texte valeur d'effort dans le fichier texte
Serial.println(F("Valeur d'effort")); // Affiche le texte valeur d'effort dans le moniteur série
monFichier.close(); // Ferme le fichier texte
} else { // Si l'écriture ne fonctionne pas
Serial.println(F(" Echec de l'écriture de l'en tête."));
while (true); // on s'arrête ici dans le cas d'un échec de l'écriture
}
LoadCell.begin(); // Connextion a l'amplificateur HX711
LoadCell.start(2000); // Le capteur d'effort a 2000ms pour se stabiliser
LoadCell.setCalFactor(43.5); // Mise en place du facteur de calibration, valable pour un unique montage
lcd.begin(); // démarrage de l'afficheur LCD, ça efface l'écran
lcd.backlight(); // Allumage du rétro-éclairage
lcd.print(F("*** PRET ***")); // Affichage sur l'écran LCD du texte Initialisation
}
void loop() {
LoadCell.update(); // retrieves data from the load cell
float effort = LoadCell.getData(); // get output value
lcd.setCursor(0, 0); // set cursor to first row
lcd.print(F("Poids[g]:")); // print out to LCD
lcd.setCursor(0, 1); // set cursor to second row
lcd.print(effort); // print out the retrieved value to the second row
// On enregistre la donnée
monFichier = SD.open("donnees.csv", FILE_WRITE); //Maximum 8 caractères avant le .csv
if (monFichier) {
monFichier.println(effort);
Serial.println(effort);
monFichier.close();
} else {
Serial.println(F("Impossible d'ouvrir le fichier"));
}
delay(5000);
}
J'ai utilisé votre fichier J-M-L et en fait je constate deux choses, la cellule d'effort ne marche toujours pas, et il y'a la superposition de deux textes sur l'écran lcd, Poids [g] et Initialisation, comment puis-je régler ce problème, avec un delay ?
Bon, une mise a jour encore, le câblage doit être mauvais dans la mesure ou en utilisant le programme de test du HX711, je n'obtiens qu'une valeur d'effort qui est aberrante et qui ne varie pas.