Nie powinieneś wywoływać funkcji z plików nagłówkowych. Pliki nagłówkowe służą do definiowania makr preprocesorów (#define) i odniesień do zmiennych / funkcji w innych plikach.
Powinieneś tworzyć wiele plików C i łączyć je ze sobą podczas kompilacji. Plik nagłówkowy służy do informowania każdego pliku C, jakie funkcje i zmienne mają inne pliki C.
Aby używać wielu plików w Arduino IDE, potrzebujesz co najmniej 1 pliku nagłówka, aby opisać funkcje zawarte w innych plikach, które chcesz udostępnić między nimi. Ponadto wszelkie zmienne globalne, których chcesz używać we wszystkich plikach.
Definicje te należy zakwalifikować za pomocą atrybutu „zewnętrznego”.
Następnie musisz dodać jeden lub więcej plików „pde”, które zawierają rzeczywisty kod i definicje zmiennych dla funkcji.
Na przykład mam plik „mouse.h”:
extern void mouse_read(char *,char *, char *);
extern void mouse_init();
oraz plik „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);
}
Następnie w moim głównym pliku mam:
#include "mouse.h"
i mogę wywoływać funkcje znajdujące się w pliku „mouse.pde” tak, jakby były w pliku lokalnym.