[Problème de compilation ] Détection de doublon de librairie

Bonjours à tous je suis dans un premier temps heureux de pouvoir enfin parti de cette communauté.

Je me suis lancé depuis quelques mois dans l'arduino et à l'heure actuelle je rencontre un problème lors de la compilation d'un programme dédié à un afficheur LCD je vous écris ci dessous le programme:

#include <LiquidCrystal.h>
/*****************Régulation intéligente de la température d'une voiture /
/
************************************************************************/

int LM35_pin = A0; //La pin A0 est reliée au capteur LM35
int Motors_pin = 13; //La pin 13 est reliée aux deux ventilateurs tournant dans deux sens différents
int pushbutton_pin = 0; // La pin 8 est reliée au boutton poussoir

/**************************Pin Déclaration *****************************************/
int LM35_Value = 0;
float Temperature = 0;
float Temperature_Celsius = 0;
int pushbutton = 0;
//Création d'un objet LCD de paramétre:(RS= pin N°12, E= pin N°11, D4= pin N°5,D5= pin N°4,D6= pin N°3, D7= pin N°2
LiquidCrystal LCD_pin = LiquidCrystal(12,11,5,4,3,2);

void setup(){
Serial.begin(9600);
//Initialisation des composants :
pinMode(LM35_pin,INPUT); // Définit la broche A0 comme une entrée
pinMode(Motors_pin,OUTPUT);/// Définit la broche 13 comme une sortie
pinMode(pushbutton_pin,INPUT); // Définit la broche 0 comme une entrée
LCD_pin.begin(16,2);
LCD_pin.clear();

}

void loop() {
/**************************************** PARTIE 1.a /
/
Mesure de la température avec un capteur LM35
******/

// La fonction analogRead, va lire la valeur sur la pin A0 et la convertir en valeur numérique
LM35_Value = analogRead(LM35_pin);
Temperature = (LM35_Value/1024.0)*5000;
Temperature_Celsius = Temperature/10;

Serial.print("Lav temperature est :");
Serial.println(Temperature_Celsius);

/**************************************** PARTIE 1.b *****************/
/
Fonctionnement des Moteurs a partie de 30°C ************************/

if(Temperature_Celsius >= 30)
digitalWrite(Motors_pin,HIGH);
else
digitalWrite(Motors_pin,LOW);

/**************************************** PARTIE 1.c **/
/
Affichage LCD ***************************************/
LCD_pin.setCursor(0,0);
LCD_pin.print("Temperatur en C:");
LCD_pin.setCursor(0,1);
LCD_pin.println(Temperature_Celsius);

/**************************************** PARTIE 1.d ****************/
/
Interuption à l’aide d’un bouton poussoir *************************/

pushbutton = digitalRead(pushbutton_pin);
if(pushbutton == 1)
digitalWrite(Motors_pin,LOW);
else
digitalWrite(Motors_pin,HIGH);

}

Voici l'erreur :

C:\Users\Fatma Zorgati\Documents\Scolarité\P3GA\S2\TP Systeme Embarqué\Confinement\06-05-2020 (S4)\Smart_temp_rature\Smart_temp_rature UNO.ino: In function 'void loop()':

C:\Users\Fatma Zorgati\Documents\Scolarité\P3GA\S2\TP Systeme Embarqué\Confinement\06-05-2020 (S4)\Smart_temp_rature\Smart_temp_rature UNO.ino:30:6: error: redefinition of 'void loop()'

C:\Users\Fatma Zorgati\Documents\Scolarité\P3GA\S2\TP Systeme Embarqué\Confinement\06-05-2020 (S4)\Smart_temp_rature\Smart_temp_rature.ino:31:6: note: 'void loop()' previously defined here

Plusieurs bibliothèque trouvées pour "LiquidCrystal.h"
Utilisé : C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
Non utilisé : C:\Users\Fatma Zorgati\Documents\Arduino\libraries\LiquidCrystal-master
Utilisation de la bibliothèque LiquidCrystal version 1.0.7 dans le dossier: C:\Program Files (x86)\Arduino\libraries\LiquidCrystal
exit status 1
Erreur de compilation pour la carte Arduino Mega or Mega 2560

P.S: Je spécifie que le programme marché parfaitement mais quand j'ai changé de carte les ennuies ont commencer

Merci d'avance pour votre aide

Bonjour,

Ce serait bien de lire les règles d'usage du forum français et de mettre ton code entre balise. Tu peux éditer ton post en cliquant dans le bas de ton message sur More puis Modify.
Concernant ton problème.

C:\Users\Fatma Zorgati\Documents\Scolarité\P3GA\S2\TP Systeme Embarqué\Confinement\06-05-2020 (S4)\Smart_temp_rature\Smart_temp_rature UNO.ino:30:6: error: redefinition of 'void loop()'

C:\Users\Fatma Zorgati\Documents\Scolarité\P3GA\S2\TP Systeme Embarqué\Confinement\06-05-2020 (S4)\Smart_temp_rature\Smart_temp_rature.ino:31:6: note: 'void loop()' previously defined here

Manifestement, tu dois avoir 2 fichiers .ino dans ton répertoire projet:

  • Smart_temp_rature UNO.ino
  • Smart_temp_rature.ino

Comme l'IDE est un peu idiot il compile tous les fichiers .ino qu'il trouve dans le répertoire projet. Les 2 fichiers en question doivent contenir une fonction loop(). Si l'un des 2 ne fait plus partie du projet le plus simple serait de le supprimer ou de le déplacer dans un autre répertoire.

A noter quand même:

  • ta gestion de la température est un peu rustique. La mesure de la température est entachée de bruit et lorsque tu vas te trouver dans un cas où tu mesures 29.9, 30.0, 29.8, 30.0, ... le moteur ne va pas arrêter de s'allumer et de s'éteindre. Il vaudrait mieux avoir une gestion du moteur de la forme
 if(Temperature_Celsius >= 30.0){
     digitalWrite(Motors_pin,HIGH);
}
 if(Temperature_Celsius < 29.0){
     digitalWrite(Motors_pin,LOW);
}

La fourchette de température pouvant être adaptée en fonction du bruit de mesure sur la température.

  • On ne connaît pas ton cahier des charges mais la gestion du bouton poussoir interfère avec la commande automatique. Si les commandes sont en contradiction le moteur va faire on, off, on, off en permanence.