Вы не должны вызывать функции из заголовочных файлов. Заголовочные файлы предназначены для определения макросов препроцессора (#define) и ссылок на переменные / функции в других файлах.
Вы должны создать несколько файлов C и связать их вместе во время компиляции. Заголовочный файл используется, чтобы сообщить каждому C-файлу, какие функции и переменные имеют другие C-файлы.
Чтобы использовать несколько файлов в Arduino IDE, вам необходим как минимум 1 заголовочный файл для описания функций, которые есть в других файлах, которыми вы хотите поделиться между ними. Кроме того, любые глобальные переменные, которые вы хотите использовать во всех файлах.
Эти определения должны быть дополнены атрибутом "external".
Затем вам нужно добавить один или несколько файлов "pde", которые содержат фактический код и определения переменных для функций.
Например, у меня есть файл "mouse.h":
extern void mouse_read(char *,char *, char *);
extern void mouse_init();
и файл "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);
}
Тогда в моем основном файле у меня есть:
#include "mouse.h"
и я могу вызвать функции, которые находятся в «mouse.pde», как если бы они были в локальном файле.