Scrivo per chiedere, sebbene abbia fatto delle ricerche con esito negativo, se è possibile includere nel progetto/file .ino un file .h con relativo .c che non siano però una libreria. (quindi da aggiungere alle librerie con opportuno comando da menu).
Lo scopo, ovvio, è quello di ridurre la lunghezza del file .ino (file principale) e di poter riutilizzare il codice in futuro in altri progettini.
Ho trovato una discussione simile ma è terminata senza una soluzione al problema. Pertanto vi chiedo se è possibile quindi far compilare (con opportuno include) all'IDE un file esterno al file principale che non sia una libreria. Spero di essermi spiegato a sufficienza. Grazie a chiunque mi vorrà aiutare.
Li metti nella stessa cartella del .ino e ti accorgerai che ...
... come apri il .ino, l'IDE ti aprirà automaticamente anche i .c e .h che troverà in quella cartella
ESEMPIO : Scarica il .zip che trovi QUI, scompattalo in una cartella sul desktop (quindi non lo metti dove hai le librerie) ... e apri il .ino che è nella cartella ... vedrai che ti vengono aperti anche tutti gli altri files.
Grazie ancora Guglielmo,
ora ho capito che era più semplice di quello che pensavo!
Inoltre mi hai fornito una routine standard (16 e 32) già collaudata per il calcolo del CRC che è oltre ad essere un ottimo esempio d'implementazione è utilissima.
Sei stato molto prezioso e mi hai risolto un problema. Spero di contraccambiare con te ed il Forum.
Perdonami se approfitto ancora, ho provato con un file semplice e non ci sono problemi, così come non ci sono problemi per la libreria CRC.
mentre se provo ad esportare, per esempio i miei menu, includendoli come mieimenu.h (dove ci sono i prototipi) e mieimenu.c (dove c'è il corpo del codice) accade una cosa simpatica. Appena compilo però mi da una serie di errori a partire dalla prima dichiarazione di variabile locale (che è una boolen).
E' curioso. Quindi per ora tengo il progetto nello stesso file e cerco di capire perchè si "arrabbia".
Nota: Affinchè funzioni anche l'esempio semplice (led che lampeggia) nel file .h ho dovuto mettere in testa:
#ifdef __cplusplus
extern "C" { #endif
... corpo del .h con la dichiarazione dei prototipi....
ed in coda al .h:
#ifdef __cplusplus
} #endif
Senza questo anche il semplice programmino che fa lampeggiare il LED non funziona.
Il codice di Arduino è C++ e come tale viene trattato.
Se devi inserire del codice .c tramite una include, come hai scoperto, devi definirlo espressamente come C con la sintassi che, correttamente, hai usato