[RISOLTO]Spiegazione file .pde .h .cpp di un firmware per stampanti 3D

Ciao a tutti.
Mi servirebbe una mano a togliermi qualche dubbio relativamente a questo firmware: https://github.com/ErikZalm/Marlin/tree/Marlin_v1/Marlin
È uno dei firmware per stampanti 3D; ho già letto questa guida: What Is Visual Programming and How Does It Work? | AppMaster più tutte quelle base sulla programmazione di Arduino

Le mie domande sono:
-qual'è il file sketch?
Dovrebbe essere in teoria Marlin.pde che dovrebbe richiamare tutte le librerie etc etc... Ma se lo analizziamo non c'è nulla di tutto ciò
-il file marlin_main.cpp invece richiama il mondo; ma ipotizzo che non sia il file che viene caricato per primo essendo una “libreria” che dovrebbe essere richiamata da un .pde o un .ino

Grazie per le risposte e perdonatemi l'eventuale banalità delle domande. Nel caso conosciate qualche guida che mi possa chiarire questi concetti, sarei felice di leggerla.

Io per compilare Marlin apro l'IDE, seleziono tutti i files nella cartella e li trascino nella finestra dell' IDE, funziona!

cece99:
Io per compilare Marlin apro l'IDE, seleziono tutti i files nella cartella e li trascino nella finestra dell' IDE, funziona!

Basta che copi tutto il progetto in una cartella nominata "Marlin" e apri Marlin.ino, pde non si usa più, e automaticamente ti vengono aperti tutti i file correlati.

Se usi l'IDE superiore alla versione 0023, ovvero 1.0.5 o 1.5.5, l'estensione è cambiata in .ino
Quando carichi un file .ino (o .pde) l'IDE carica nelle diverse tab anche tutti i file con estensione .c, .cpp e .h
Se dai il comando per compilare unisce tutti i file e compila, linkando poi il file main.cpp, compilato a parte, dove c'è la funzione main(), obbligatoria in C.
Visto che nel file marlin_main.cpp ci sono le funzioni setup() e loop(), richieste dall'IDE di Arduino perché presenti in main.cpp, la compilazione va a buon fine e il programma funziona.

Se vuoi capire come funziona il programma devi partire dal main.cpp di Arduino che sostanzialmente richiama la funzione init(), poi la funzione setup() e infine con un ciclo infinito la funzione loop().
Come già detto setup() e loop() le trovi in Marlin_main.cpp

Forse è solo una omonimia, però anche la città coincide, sei questo Ivan Bortolin ?

astrobeed:
Forse è solo una omonimia, però anche la città coincide, sei questo Ivan Bortolin ?

Mi pare una domanda inutile visto che ha il sito linkato nella sua firma. :grin:

PaoloP:
Mi pare una domanda inutile visto che ha il sito linkato nella sua firma. :grin:

Vero, non ci avevo fatto caso :smiley:

PaoloP:
Se dai il comando per compilare unisce tutti i file e compila, linkando poi il file main.cpp, compilato a parte, dove c'è la funzione main(), obbligatoria in C.
Visto che nel file marlin_main.cpp ci sono le funzioni setup() e loop(), richieste dall'IDE di Arduino perché presenti in main.cpp, la compilazione va a buon fine e il programma funziona.

Se vuoi capire come funziona il programma devi partire dal main.cpp di Arduino che sostanzialmente richiama la funzione init(), poi la funzione setup() e infine con un ciclo infinito la funzione loop().
Come già detto setup() e loop() le trovi in Marlin_main.cpp

Ok, ottimo, grazie per la risposta! Ultima domanda: quando compilo l'IDE va a cercarsi in automatico il file che presenta setup() e loop()? È questo che mi è poco chiaro.

IvanBortolin:
Ok, ottimo, grazie per la risposta! Ultima domanda: quando compilo l'IDE va a cercarsi in automatico il file che presenta setup() e loop()? È questo che mi è poco chiaro.

L'IDE non cerca nulla, è il compilatore, avr gcc, che si va a leggere tutto il programma, tutti i file, e trova quello che gli serve per creare l'eseguibile, se manca qualcosa te lo dice tramite vari messaggi di errore.

astrobeed:

IvanBortolin:
Ok, ottimo, grazie per la risposta! Ultima domanda: quando compilo l'IDE va a cercarsi in automatico il file che presenta setup() e loop()? È questo che mi è poco chiaro.

L'IDE non cerca nulla, è il compilatore, avr gcc, che si va a leggere tutto il programma, tutti i file, e trova quello che gli serve per creare l'eseguibile, se manca qualcosa te lo dice tramite vari messaggi di errore.

Ottimo, siete stati tutti chiarissimi e gentili! Metto risolto. (In caso se ho altri dubbi apro un topic specifico?)