Aller au contenu


Photo
- - - - -

Arduino - Plusieurs éléments en I2C : conflit à la compilation


  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1 Mickixe

Mickixe

    Membre

  • Membres
  • 20 messages
  • Gender:Male
  • Location:La Roche sur Yon

Posté 15 décembre 2019 - 04:39

Bonjour,

 

Je suis actuellement sur un montage basé sur une arduino uno, sur laquelle j'ai un shield moteur, auquel, j'ai connecté également en I2C, un écran LCD et une carte de pilotage de servos (objectif d'en mettre 6). Je commande le tout avec une télécommande IR pour l'instant.

 

Dans mon programme, je fais appel à 2 bibliothèque (Adafruit_MotorShield.h et Adafruit_PWMServoDriver.h)

 

Le montage fonctionne, toutefois lors de la compilation, j'ai un message d'alerte du type :

 

In file included from C:\Users\micka\Documents\Arduino\ROBOTMIC_IR_SERVO\ROBOTMIC_IR_SERVO.ino:4:0:
 
C:\Program Files (x86)\Arduino\libraries\Adafruit_PWM_Servo_Driver_Library/Adafruit_PWMServoDriver.h:34:0: warning: "PCA9685_SUBADR3" redefined
 
 #define PCA9685_SUBADR3 0x04    /**< I2C-bus subaddress 3 */
 
In file included from C:\Program Files (x86)\Arduino\libraries\Adafruit_Motor_Shield_V2_Library/Adafruit_MotorShield.h:22:0,
 
                 from C:\Users\micka\Documents\Arduino\ROBOTMIC_IR_SERVO\ROBOTMIC_IR_SERVO.ino:3:
 
C:\Program Files (x86)\Arduino\libraries\Adafruit_Motor_Shield_V2_Library/utility/Adafruit_MS_PWMServoDriver.h:30:0: note: this is the location of the previous definition
 
 #define PCA9685_SUBADR3 0x4

 

 

 

 

Je pense qu'il y a conflit entre les 2 bibliothèques compte tenu que mon shield comporte 2 ports servos.

Bon ça n'est pas bloquant pour le téléversement et ça semble fonctionner, mais c'est pas top quand même...

 

Pouvez-vous me dire svp s'il y a un moyen d'apporter un correctif de manière à ne plus avoir ces messages ?

(modification à apporter dans un des fichier de la bibliothèque ?)

 

Vous remerciant par avance pour votre aide,

 

Mickaël

 



#2 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 262 messages
  • Gender:Male

Posté 15 décembre 2019 - 09:22

Bonsoir,

vu que c'est la même valeur dans les deux bibliothèques, si ça compile ça ne posera pas de problème.

 

Sinon, en solutions, j'en vois deux :

1) dans une des bibliothèques, tu renomme PCA9685_SUBADR3 en autre chose partout dans le fichier

2) tu protège de la définition multiple à l'aide du préprocesseur de la manière que ça se fait souvent pour les inclusions des fichier .h des bibliothèques : dans les deux bibliothèques, tu remplace :

 #define PCA9685_SUBADR3 0x4

par

#ifnfed PCA9685_SUBADR3
#define PCA9685_SUBADR3 0x4
#endif

Du coup, si PCA9685_SUBADR3 a déjà été défini, tu n'entre pas dans le if, et donc tu ne le définis pas une seconde fois

 

Bonne soirée

Sandro
 


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#3 Mickixe

Mickixe

    Membre

  • Membres
  • 20 messages
  • Gender:Male
  • Location:La Roche sur Yon

Posté 16 janvier 2020 - 10:08

Bonsoir,

Merci Sandro pour ta réponse.

Je n'ai pas encore eu l'occasion de tester car la compilation marche et pas de soucis ensuite, mais j'essaierai quand même pour avoir un truc propre !

Mickaël






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users