Usted no debe llamar a funciones desde dentro de los archivos de encabezado. Archivos de encabezado son para definir pre-procesador de macros (#define) y las referencias a variables / funciones en otros archivos.
Usted debe ser la creación de múltiples C archivos y vinculan entre sí en tiempo de compilación. El archivo de encabezado se utiliza para decirle a cada archivo C ¿qué funciones y variables de los otros C archivos tienen.
Para el uso de varios archivos en el Arduino IDE se requiere al menos 1 archivo de encabezado para describir las funciones que en el resto de los archivos que desea compartir entre ellos. También, las variables globales que desea utilizar en todos los archivos.
Estas definiciones deben ser calificados con el "exterior" de atributo.
Entonces usted necesita para agregar uno o más "pde" el archivo que contiene el código real y variable de las definiciones de las funciones.
Por ejemplo, yo tengo un "ratón.h" archivo:
extern void mouse_read(char *,char *, char *);
extern void mouse_init();
y un "ratón.pde" archivo:
#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);
}
Luego, en mi archivo principal que tengo:
#include "mouse.h"
y me pueden llamar a las funciones que están en "el ratón.pde" como si estuvieran en el archivo local.