आपको हेडर फ़ाइलों के भीतर से फ़ंक्शन कॉल नहीं करना चाहिए। हेडर फाइलें प्री-प्रोसेसर मैक्रोज़ (#define) को परिभाषित करने और अन्य फाइलों में चर / कार्यों के संदर्भ में हैं।
आपको कई सी फाइलें बनानी चाहिए और उन्हें संकलन समय पर एक साथ जोड़ना चाहिए। हेडर फाइल का उपयोग प्रत्येक सी फाइल को यह बताने के लिए किया जाता है कि अन्य सी फाइलों के क्या कार्य और चर हैं।
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" में होने वाले फ़ंक्शन को कॉल कर सकता हूं जैसे कि वे स्थानीय फ़ाइल में थे।