Utilisation de fichiers « .cpp » et « .h »

Bonjour à tous.

Je ne parviens pas à utiliser la variable "lcd" dans le fichier "cpp" lié au fichier de base "ino".

Fichier monProgramme.ino

#include <LiquidCrystal.h>
#include "mesFonctions.h"
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); 

void setup() {
lcd.begin(16, 2);
afficheMessage(); // Dans le fichier « .cpp ».
}

void loop() {
}

Fichier mesFonctions.cpp

#include "mesFonctions.h"
extern LiquidCrystal lcd; // Aucune utilité !

void afficheMessage(){ 
    lcd.setCursor(0, 0); 
    lcd.print("Message");
}

Fichier mesFonctions.h

void afficheMessage();

J’obtiens, pour le fichier "cpp", les 2 erreurs suivantes :

mesFonctions.cpp:3: error: 'LiquidCrystal' does not name a type
mesFonctions.cpp: In function 'void afficheMessage()':
mesFonctions.cpp:8: error: 'lcd' was not declared in this scope

Comment déclarer 'lcd' pour pouvoir l’utiliser dans le fichier « mesFonctions.cpp » ?
Bonne programmation à tous.

Ou là, tu déclares faussement les fonctions dans le cpp et le .h

Regarde ceci, ca t'aidera à le faire correctement. C'est un bon exemple

Bonne chance

Merci pierrot10 pour la réponse.

Toutefois, je ne souhaite pas créer une "library" mais seulement faire appel à un fichier externe ".cpp" qui regrouperait les fonctions.

Cela fonctionne parfaitement avec d'autres codes que j'ai créés, mais là le "lcd" coince.
Je vais toutefois consulter le lien fourni.

Cordialement.

Euh non y'a pas de déclarations fausses ...

Ce qui manque c'est juste dans le .h :

#include <LiquidCrystal.h>

Merci B@tto pour la réponse.

Toutefois, le code génère toujours une erreur, même après avoir ajouté, dans le fichier ".h" :
#include <LiquidCrystal.h>

J'obtiens :
1. lorsque je ne mets pas "extern LiquidCrystal lcd;" dans le fichier "mesFonctions.cpp"
mesFonctions.cpp: In function 'void afficheMessage()':
mesFonctions.cpp:7: error: 'lcd' was not declared in this scope

2. lorsque je mets "extern LiquidCrystal lcd;" dans le fichier "mesFonctions.cpp"
mesFonctions.cpp.o: In function afficheMessage()': mesFonctions.cpp:7: undefined reference to lcd'
mesFonctions.cpp:7: undefined reference to `lcd'

Bloqué et pas moyen de trouver la solution malgré divers essais...
Cordialement.

Tu t'embrouilles, extern indique au compilateur que la variable est déclarée ailleurs dans un autre fichier source.

Dans le source qui contient la déclaration de la variable, il faut la déclarer public.
Dans les sources qui utilisent la variable en question, elle doit être déclarée extern.

Bonjour fdufnews

La variable "lcd" est bien déclarée dans un autre fichier source, à savoir "monProgramme.ino" ; c'est la raison pour laquelle j'ai mis "extern" (voir le code en début de ce post).

Cette notation fonctionne avec d'autres variables, mais pas avec le constructeur LiquidCrystal() !

Cordialement.

J'ai relancé l'IDE et bizarrement il n'y a plus de message d'erreur...
Merci pour votre aide.

Cordialement.