Voilà en fait tout est dit dans le titre, pour des raisons de clarté dans mon code je m'essai aux classes, et j'aimerai inclure la librairie LiquidCrystal dedans. Pour l'instant j'ai juste fait un petit code de test.
J'inclue la librairie dans mes fichiers .ccp et .h mais l'IDE arduino ne compile pas et m'affiche :
Arduino\libraries\Test\Test.cpp:10: error: 'lcd' was not declared in this scope.
En fouillant sur internet j'ai vu que l'IDE arduino fonctionnait bizarrement au niveau des classes et intégrations de librairies, mais j'ai pas trouvé de solutions à mon problème.
Si vous pouviez jeter un coup d'oeil ce serait sympa :
Malheureusement j'ai déjà essayé et comme ton lien l'indique :
<> la recherche se fait dans les répertoires définis pour la chaîne de compilation
"" le chemin est relatif par rapport à l'emplacement des sources.
Et j'ai placé la librairie dans le dossier librairie de l'arduino donc à priori c'est ça ?
Par contre j'ai lu un lien pas mal sur le forum, la personne voulait introduire la librairie servo, et il s'en serait sorti en appelant la fonction begin dans l'étiquette private de la classe, pour qu'il est un "point de rappel" dans le sketch. Enfin je m'embrouille et doit dire de grosse âneries, je re-lirai tout ça demain ! Si vous avez des suggestions n'hésitez pas
Tu utilise dans ton fichier .cpp (Test) une variable globale (lcd) créée dans ton fichier de base... Ca ne peut pas marcher.
Il faut avoir une instance de la classe LiquidCristal dans ta classe Test pour pouvoir l'utiliser (soit créée dans la classe elle même, soit passée en paramètre au constructeur par exemple).
discoveryarduino:
skywodd, pourrais-tu m'expliquer pourquoi tu as utilisé le "F" dans _lcd.print(F("YOYO")); ?
C'est pour placer le texte en mémoire flash et non en RAM, c'est une bonne habitude à prendre.
Détails techniques : PROGMEM - Arduino Reference
discoveryarduino:
Et pourquoi doit-on mettre le tiret du bas pour LiquidCrystal& _lcd; ?
De manière générale le tiret du bas sert à quoi en fait ?
Le "_" est une convention de nommage pour les attributs d'une classe.
Il en existe d'autre, ce n'est pas obligatoire de suivre les conventions mais pareil c'est une bonne habitude à prendre.
Re-bonjour, je vais donner un peu plus de détails sur ma question d'hier qui n'était pas super explicite.
En fait, pour m’entraîner, je souhaite afficher un menu sur un lcd 20x4.
Je suis arrivé à le faire, grâce à skywood, je peux naviguer dedans sans problème.
Dans une classe, je récupère grâce à l'attribut privé "m_x" la position du curseur sur l'écran lcd.
(Quand on appui sur le bouton haut, m_x s'incrémente, et quand on appui sur le bouton bas m_x décrémente.)
Ce que je souhaite, c'est récupérer cette variable m_x dans une autre classe, pour bénéficier de cette position du curseur.
Voici mon code (c'est un code épuré pour vous montrer) :
Test.h
#ifndef TEST_H
#define TEST_H
class Test {
public :
void PositionCurseur();
private :
int m_x;
};
#endif
J'ai testé différentes méthodes que j'ai trouvé sur internet, pointeur *, mutateur set, classe amie...
Je dois mal m'y prendre, je me tire les cheveux avec les pointeurs c'est la galère ^^
Si vous pouviez me mettre sur une piste... j'en serais très reconnaissant !