Go Down

Topic: Inclusion d'une librairie arduino dans un fichier .cpp (Read 811 times) previous topic - next topic

fritz_smh

Bonjour,

Je me heurte à une difficulté... Je suis en train de développer un projet arduino et plutôt que de séparer simplement le code en fichiers .ino, j'ai voulu créer des fichiers .cpp et .h pour les différents "thèmes" du programme.
Dans un de ces "thèmes", je désire contrôler un écran LCD. Mon programme de test fonctionne très bien en tant que sketch unique, mais quand je mets le code dans le .cpp, impossible d'inclure la librairie LiquidCrystal.h. :

Code: [Select]
#include <LiquidCrystal.h>

Code: [Select]
lcd_2x16.cpp:7:27: fatal error: LiquidCrystal.h: Aucun fichier ou dossier de ce type
compilation terminated.


Si je fais ainsi, c'est mieux, mais la fonction n'est pas reconnue...

Code: [Select]
#include "/usr/share/arduino/libraries/LiquidCrystal/LiquidCrystal.h"

int rs = 22;
int rw = 24;
int enable = 26;
int d4 = 39;
int d5 = 41;
int d6 = 43;
int d7 = 45;
LiquidCrystal lcd(rs, rw, enable, d4, d5, d6, d7);


Code: [Select]
lcd_2x16.cpp.o: In function `global constructors keyed to lcd':
lcd_2x16.cpp:11: undefined reference to `LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)'
collect2: ld returned 1 exit status


Une idée ?

SesechXP

Salut,

Si j'ai bien compris, tu inclus le fichier LiquidCrystal.h dans le fichier cpp de la bibliothèque ?

J'avais constaté un problème de link il y a quelques temps. Je ne sais pas s'il a été résolu dans la version 1.0.1 mais tu peux essayer d'inclure LiquidCrystal dans ton cpp ET dans le sketch.

icare

Salut à tous,


Salut,
Si j'ai bien compris, tu inclus le fichier LiquidCrystal.h dans le fichier cpp de la bibliothèque ?
J'avais constaté un problème de link il y a quelques temps. Je ne sais pas s'il a été résolu dans la version 1.0.1 mais tu peux essayer d'inclure LiquidCrystal dans ton cpp ET dans le sketch.


Je fais quelque chose de similaire pour un lcd via I2C et pour que cela fonctionne, il me faut #include <Wire.h> dans le ino et le cpp.
@+
2B OR NOT(2B) = FF
Arduino 1.0.5 + Notepad++ (sous Linux Fedora et/ou Windows)

skywodd

Bonjour,

Tu utilise l'ide arduino pour éditer ton fichier .cpp ?
C'est peut être lui qui vient tout foutre en l'air ?
Vu que normalement l'ide concatène chaque fichier dans un gros fichier .cpp global avant de compiler.

Si tu migre tes fichiers .cpp et .h dans le dossier "libraries" est ce que tu as toujours la même erreur (ne pas oublier l'include de Arduino.h) ?
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Go Up