Auteur Sujet: Compilation Ok sur arduino Uno - Ko sur Leonardo ?  (Lu 19161 fois)

francis_fr13

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Compilation Ok sur arduino Uno - Ko sur Leonardo ?
« le: décembre 18, 2018, 08:04:08 pm »
Hello,

J'ai développé un programme pour animer mes aiguilles avec des servos (via sorties Pwm), le tout piloté à l'aide d'une télécommande.
Sur mon réseau j'ai 7 aiguilles... et l'arduino Uno n'a que 6 Pwm.
Je pensais utiliser un montage électronique pour augmenter la quantité, lorsque j'ai lu que le Leonardo comportait 7 Pwm  ;)

Jusqu'à présent mon programme fonctionne bien sur le Uno.
J'ai reçu un Leonardo, je compile/charge le programme existant, et là j'ai une erreur à la compilation:

Arduino : 1.6.9 (Windows 7), Carte : "Arduino Leonardo"
libraries\Servo\avr\Servo.cpp.o: In function `__vector_17':
I:\Program Files\Arduino\libraries\Servo\src\avr/Servo.cpp:81: multiple definition of `__vector_17'
libraries\IRLib\IRLib.cpp.o:I:\Program Files\Arduino\libraries\IRLib/IRLib.cpp:1039: first defined here
collect2.exe: error: ld returned 1 exit status
exit status 1


Je comprends qu'il y a une erreur au niveau des librairies, est ce qu'il y a des librairies dédiées pour le modèle Leonardo ?

Merci d'avance
@+
Francis

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Compilation Ok sur arduino Uno - Ko sur Leonardo ?
« Réponse #1 le: décembre 18, 2018, 08:53:02 pm »
Bonsoir,
à ma connaissance, il n'y a pas de librairies spécifiques.
je voterai pour un conflit de bibliothèques (ou d'includes) qui figurent à deux endroits.
si une pin est déclarée pour un mode qu'elle ne peut réaliser, il n'y aura pas d'erreur, mais le mode ne sera pas exécuté.
mais il faudrait connaitre mieux votre programme pour les experts voient (et qu'on compile dans notre environnement)
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Compilation Ok sur arduino Uno - Ko sur Leonardo ?
« Réponse #2 le: décembre 19, 2018, 09:09:04 am »
Bonjour,

Il n’est pas nécessaire que la sortie soit une sortie PWM pour y connecter un servo. Donc pas nécessaire d’avoir un Leonardo.

Concernant l’erreur de compilation, il semble que Servo et IRLib utilisent la même interruption. Le vecteur 18 est celui du TIMER1 COMPA. Servo utilise le Timer 1

J’ai trouvé le code source de IRLib ici : https://github.com/cyborg5/IRLib

Effectivement ligne 1138 on a la déclaration d’une ISR. Le vecteur d’interruption utilisé est défini dans IRLibTimer.h. Visiblement on peut y changer des choses pour utiliser un autre timer (ligne 77, 78 et 79).

Mais bon, comme je le disais, il n’est pas nécessaire d’utiliser une sortie PWM pour les servos.
Cordialement

francis_fr13

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : Compilation Ok sur arduino Uno - Ko sur Leonardo ?
« Réponse #3 le: décembre 19, 2018, 08:23:32 pm »
Bonsoir,

Merci beaucoup à vous 2 pour vos réponses.
J'ai modifié le Timer sélectionné dans le fichier .h, le 3 au lieu du 1 original et la compilation est Ok pour le Leonardo.

Après mon aiguille 7 ne fonctionnait toujours pas...erreur d'indexage dans le tableau de servos (1-7 au lieu 0-6  :-X no comment !)
A priori tout est rentré dans l'ordre.

Je sais que l'utilisation du pwm n'est pas obligatoire mais c'est un choix personnel, je trouvais ça plus simple :)

Pour info, concernant la détection de position des aiguilles, notamment au démarrage, j'ai pris le parti de forcer la remise en position zéro de tous les servos par la touche On/Off de la télécommande.
Il faut juste m'assurer de presser la touche n/off en fin de session, tous les servos retrouvent alors leur position initiale, pas de mouvement lors de la mise en route.
Je vous posterai une photo des montages ce weekend, avec des supports de servos imprimés en 3d...
@+
 
 

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : Compilation Ok sur arduino Uno - Ko sur Leonardo ?
« Réponse #4 le: décembre 19, 2018, 08:26:03 pm »
C’est pas que c’est obligatoire ou pas. C’est juste pas utilisé  :)

Les sorties servo sont programmées en sorties numériques, point, pas PWM
« Modifié: décembre 19, 2018, 08:32:25 pm par Jean-Luc »
Cordialement

francis_fr13

  • Newbie
  • *
  • Messages: 5
    • Voir le profil
Re : Compilation Ok sur arduino Uno - Ko sur Leonardo ?
« Réponse #5 le: décembre 21, 2018, 04:48:25 pm »
Bonjour,
Oui en effet je viens de voir ça  :-[
Voilà ce qui arrive lorsqu'on bâcle la préparation.
Ayant vraiment peu de temps à consacrer à mes hobby, j'avoue avoir minimisé au maximum mon approche de connaissance du hardware de l'arduino pour aller à l'essentiel: sortir le code pour faire fonctionner les aiguilles.
Je me suis contenté de lancer l'IDE et écrire mon programme en partant des exemples donnés.

Pour les sorties, j'avais lu quelque part et compris (trop vite) qu'on ne pouvait se connecter que sur les sorties identifiées par le signe "alternatif", merci de m'avoir remis sur la bonne voie.
Bon de toute façon, le leonardo sera dédié et intégré sous le réseau, l'arduino me sert à développer par ailleurs.

Je vais profiter de ces quelques jours de vacances pour potasser un peu le contenu de ce forum, promis  ;)