คุณไม่ควรเรียกใช้ฟังก์ชันจากภายในไฟล์ส่วนหัว ไฟล์ส่วนหัวใช้สำหรับกำหนดมาโครตัวประมวลผลล่วงหน้า (#define) และการอ้างอิงถึงตัวแปร / ฟังก์ชั่นในไฟล์อื่น ๆ
คุณควรสร้างไฟล์ C หลายไฟล์และเชื่อมโยงเข้าด้วยกันในเวลารวบรวม ไฟล์ส่วนหัวใช้เพื่อบอกไฟล์ C แต่ละไฟล์ว่าฟังก์ชันและตัวแปรที่ไฟล์ C อื่นมี
ในการใช้หลายไฟล์ใน Arduino IDE คุณต้องมีไฟล์ส่วนหัวอย่างน้อย 1 ไฟล์เพื่ออธิบายฟังก์ชั่นที่อยู่ในไฟล์อื่น ๆ ที่คุณต้องการแชร์ระหว่างกัน นอกจากนี้ยังมีตัวแปรทั่วโลกที่คุณต้องการใช้กับไฟล์ทั้งหมด
คำจำกัดความเหล่านี้ควรมีคุณสมบัติด้วยแอตทริบิวต์ "ภายนอก"
จากนั้นคุณต้องเพิ่มไฟล์ "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" ราวกับว่าพวกเขาอยู่ในไฟล์ท้องถิ่น