Anda seharusnya tidak memanggil fungsi dari dalam file header. File header adalah untuk mendefinisikan makro pra-prosesor (#define) dan referensi ke variabel / fungsi di file lain.
Anda harus membuat beberapa file C dan menautkannya bersamaan pada waktu kompilasi. File header digunakan untuk memberi tahu setiap file C apa fungsi dan variabel yang dimiliki file C lainnya.
Untuk menggunakan banyak file di Arduino IDE, Anda memerlukan setidaknya 1 file header untuk menjelaskan fungsi-fungsi yang ada di file lain yang ingin Anda bagikan di antaranya. Juga, variabel global apa pun yang ingin Anda gunakan di semua file.
Definisi-definisi ini harus memenuhi syarat dengan atribut "eksternal".
Maka Anda perlu menambahkan satu atau lebih file "pde" yang berisi kode aktual dan definisi variabel untuk fungsi.
Misalnya, saya punya file "mouse.h":
extern void mouse_read(char *,char *, char *);
extern void mouse_init();
dan file "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);
}
Kemudian di file utama saya, saya punya:
#include "mouse.h"
dan saya dapat memanggil fungsi-fungsi yang ada di "mouse.pde" seolah-olah mereka berada di file lokal.