Vous ne devez pas appeler de fonctions à partir de fichiers d'en-tête. Les fichiers d'en-tête servent à définir les macros de pré-processeur (#define) et les références aux variables / fonctions dans d'autres fichiers.
Vous devez créer plusieurs fichiers C et les lier ensemble au moment de la compilation. Le fichier d'en-tête est utilisé pour indiquer à chaque fichier C les fonctions et les variables des autres fichiers C.
Pour utiliser plusieurs fichiers dans l'IDE Arduino, vous avez besoin d'au moins 1 fichier d'en-tête pour décrire les fonctions qui se trouvent dans les autres fichiers que vous souhaitez partager entre eux. En outre, toutes les variables globales que vous souhaitez utiliser dans tous les fichiers.
Ces définitions doivent être qualifiées avec l'attribut "externe".
Ensuite, vous devez ajouter un ou plusieurs fichiers "pde" qui contiennent le code réel et les définitions des variables pour les fonctions.
Par exemple, j'ai un fichier "mouse.h":
extern void mouse_read(char *,char *, char *);
extern void mouse_init();
et un fichier "mouse.pde":
#include <ps2.h>
PS2 mouse(6,5);
void mouse_read(char *stat,char *x, char *y)
{
mouse.write(0xeb); // give me data!
mouse.read(); // ignore ack
*stat = mouse.read();
*x = mouse.read();
*y = mouse.read();
}
void mouse_init()
{
mouse.write(0xff); // reset
mouse.read(); // ack byte
mouse.read(); // blank */
mouse.read(); // blank */
mouse.write(0xf0); // remote mode
mouse.read(); // ack
delayMicroseconds(100);
}
Ensuite, dans mon fichier principal, j'ai:
#include "mouse.h"
et je peux appeler les fonctions qui sont dans "mouse.pde" comme si elles étaient dans le fichier local.