Auteur Sujet: Library AnimationDecor  (Lu 21745 fois)

petitrain

  • Jr. Member
  • **
  • Messages: 86
    • Voir le profil
Library AnimationDecor
« le: juillet 18, 2016, 08:47:52 am »
Bonjour à tous,
  J'aurai  besoin de vos lumières pour mettre au point ma première bibliothèque...http://forum.locoduino.org/Smileys/default/embarrassed.gif
  En prenant appui sur la bibliothéque de Guillaume (AnimLum) et l'article de Thierry, j'ai mis au point une petite bibliothèque : soudeur, très simple, permettant de commander des leds néo-pixel.
 J'ai écrit ma class soudeur dans l'IDE et elle compile très bien. Puis, j'ai fait mes 2 fichiers soudeur.h et soudeur.cpp que j'ai mis dans un dossier soudeur au bon endroit.
Pour utiliser les leds nèo-pixel, j'ai besoin d'une autre library( Adafruit_NeoPixel) que j'ai mis dans mon sketch.
Quand je compile, l'IDE me renvoie: "erreur de compilation" et il pointe les fonctions de la library d'Adafruit que j'utilise dans mon .cpp
Je pense que je devrais mettre la library d' adafruit dans mon fichier .h mais je ne sais pas comment faire ni comment j'instancie mon objet Adafruit.
Je joints mes fichiers si quelqu'un peut y jeter un oeil.

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : Library AnimationDecor
« Réponse #1 le: juillet 18, 2016, 06:17:51 pm »
Bonjour

Heureux de te voir tenter ta chance dans le monde des objets...
Quelques remarques sur ce que j'ai pu voir de tes sources.
Le fichier .ino inclut <soudeur.h> puis <Arduino.h> . Trois erreurs déjà :
- si tu regardes soudeur.h, il inclut déjà arduino.h, alors inutile de l'inclure à nouveau dans le .ino .
- ton soudeur.h contient une déclaration de classe, typiquement un fichier C++. Il devrait donc s'appeler soudeur.hpp ! Je n'ai pris conscience que récemment de l'importance de cette extension pour le compilateur, étant moi aussi confronté à ce problème...
- le pragma 'include' a deux syntaxes : <> et "" .#include <soudeur.h> va chercher les includes dans les rouages du système et du compilateur Arduino. #include "soudeur.h" va lui chercher dans le répertoire du source cpp ou ino qu'il est en train de compiler avant d'aller ensuite fouiller le compilateur lui même s'il n'a pas trouvé.

Ton début de code .ino devrait donc s'écrire :

#include "soudeur.hpp"

en ayant bien sûr renommé ton soudeur.h !

Au sujet de la librairie, tu as deux solutions : installer cette librairie classiquement en copiant les fichiers dans Mes Documents/Arduino/Libraries/Adafruit_NeoPixel, soit en copiant tous ces sources dans ton répertoire de librairie ou de projet... Le problème de cette dernière solution est que tu ne bénéficiera plus des évolutions de cette librairie... Dans le premier cas, rien ne t'empêche de livrer le fichier zip de la librairie Adafruit dans le répertoire 'extras' de ta propre librairie !

Bon courage.
Thierry

petitrain

  • Jr. Member
  • **
  • Messages: 86
    • Voir le profil
Re : Library AnimationDecor
« Réponse #2 le: juillet 19, 2016, 02:24:19 pm »
Merci, Thierry de ta réponse.
   Effectivement, j'ai vu les deux syntaxes de 'include' mais je ne savais pas à quoi elles correspondaient;merci pour ces précisions.
   J'ai réussi à compiler ma bibliothèque en incluant la bibliothèque d'Adafruit dans mon fichier .cpp. Du coup, j'instancie mon objet
  ledNeoPixel dans mon .cpp directement. Ca marche bien, mais on ne peut pas changer les caractéristiques( nombreLeds et pin
de données) depuis le sketch .ino.
  Pour l'inclusion <Arduino.h> dans le .ino, c'est effectivement une redondance inutile.
  Je planche maintenant sur d'autres effets ( feu de braise, cheminée, chenillard). Le C++ et les objets sont bien intéressants mais j'ai encore beaucoup de mal avec la syntaxe (il faut en manger beaucoup, surement!!!) .
  Je suis passé voir les maquettes de Mini-Word à Lyon, ça donne envie d'avoir des beaux décors avec plein de leds ( d'où les néo-pixels).
  Encore merci pour ton aide et les articles de Locoduino.....   

petitrain

  • Jr. Member
  • **
  • Messages: 86
    • Voir le profil
Re : Library AnimationDecor
« Réponse #3 le: juillet 20, 2016, 02:35:22 pm »
pour les extensions du fichier d'en-tête: .h pour des fichiers en C, et .hpp pour les fichiers en C++.
C'est bien ça?
J'ai l'impression que le compilateur ne fait la différence.
« Modifié: octobre 31, 2016, 08:53:43 am par Dominique »

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 810
    • Voir le profil
Re : Library AnimationDecor
« Réponse #4 le: juillet 20, 2016, 02:49:29 pm »
hpp et cpp pour le C++, c'est bien ça. Je le pensais aussi jusqu'à il y a peu de temps où le compilateur (Visual Studio dans ce cas précis) a rouspété disant que l'extension ne lui convenait pas...

petitrain

  • Jr. Member
  • **
  • Messages: 86
    • Voir le profil
Re : Library AnimationDecor
« Réponse #5 le: août 02, 2016, 11:28:06 pm »
Encore un appel au secours,
Je suis toujours dans l'élaboration de bibliothèques, j'essaie d'en faire une JourNuit.h pour gérer mon éclairage de mes modules (halogènes + rubans RVB).
J'ai écris un sketch .ino qui va bien et j'essaie d'en tirer une class . Et c'est là que le bas blesse !!!!
Je pense que je ne sais pas passer ma variable tempsEcoule de mon .ino vers ma class.
Si quelqu'un veut y jeter un oeil, je joints ce que j'ai fait...

petitrain

  • Jr. Member
  • **
  • Messages: 86
    • Voir le profil
Re : Library AnimationDecor
« Réponse #6 le: août 02, 2016, 11:31:21 pm »
Il manque ces deux: