Struttura del programma

Ciao a tutti,
Vorrei strutturare il programma che devo fare senza tante righe di codice, pensavo di inserire le variabili globali in un file .h e tramite delle funzioni dove nid69ita è stato gentilissimo con le sue risposte,per farvi capire io provengo dalla programmazione plc ed ora dovrei fare un programma con una scheda arduno, volevo strutturare inserendo nel loop solo il richiamo delle funzioni e dei file.h per le variabili ma se non ho capito male nelle funzioni devo inserire solamente parti di codice che potrebbero essere riutilizzate nel programma.
Tra l' altro è possibile fare funzioni che lavorano direttamente con le variabili globali senza dover inserire nell' intestazione tutti i richiami, perche' ho usato i puntatori ma se devo fare una funzione che richiama tante variabili anche utilizzando il reference nell 'intestazione devo includere molte variabili.
Grazie

Quale sarebbe lo scopo di questa cosa?
Riusabilità del codice? Quindi crearti una libreria da usare su più programmi?
Avere file con poca roba altrimenti ti incasini?
Altro?

Maurizio

Davide_Facci:
Vorrei strutturare il programma che devo fare senza tante righe di codice, pensavo di inserire le variabili globali in un file .h
volevo strutturare inserendo nel loop solo il richiamo delle funzioni e dei file.h per le variabili

Fin qui è chiaro. Anche io per programmi di "medie dimensioni" faccio proprio così, ossia dei file *.h per ogni "blocco logico" di #define di simboli, variabili e funzioni che "gestiscono" qulle variabili. Ovviamente per le funzioni sarebbe preferibile metterle n un file *.ino in quanto i progetti Arduino possono averne più di uno, il "main" è quello con lo stesso nome della cartella, ma io preferisco avere solo un "main" ed il resto metterlo nei file *.h. Se però le funzioni sono più di un paio faccio direttamente una classe *.cpp che uso comeuna libreria diciamo, ma penso per ora sia prematuro parlarne.

ma se non ho capito male nelle funzioni devo inserire solamente parti di codice che potrebbero essere riutilizzate nel programma.

Eh? Le funzioni (ma in generale, non solo su Arduino..) servono proprio a questo, ossia non solo per rendere "pulito" il codice che le usa, ma anche per poterle riutilizzare in più punti dello stesso codice.
Poi però dici anche:

Tra l' altro è possibile fare funzioni che lavorano direttamente con le variabili globali senza dover inserire nell' intestazione tutti i richiami, perche' ho usato i puntatori ma se devo fare una funzione che richiama tante variabili anche utilizzando il reference nell 'intestazione devo includere molte variabili.

Scusami, ma qui mi si "intreccia" il cervello :wink: Non ho capito proprio cosa intendi dire!

Se tu metti una variabile in un file *.h, dato che è "inclusa" nel codice è come se quelle cose tu le avessi scritte in quel punto, e se è all'inizio del file *.ino sono globali.
Quindi per accedere a quelle variabili globali non devi fare altro che usarne il nome, non c'è bisogno di alcun puntatore, spiega meglio cosa intendi dire!

PS: L'unica differenza è che i file inclusi con #include ho tanto che vengono compilati nell'ordine in cui compaiono nel file *.ino, per cui devi fare attenzione all'ordine con cui li inserisci e cosa "usano".

GRAZIE mille docdoc, hai risposto alle mie domande.
Ho fatto queste domande perche' io ho messo le mie variabili globali in un file.h richiamato prima del setup con #include, il punto e' che volevo fare anche parte del codice es. gestione motore1 in un file .h
ma non perche' al suo interno ci sono parti che riutilizzero ma semplicemente per toglierlo dal loop se il codice diventa troppo lungo.
Per fare questo ho visto che l' unico metodo e' fare una funzione, il problema è che se al suo interno ci sono molte variabili dichiarate globalmente nel file.h incluso sopra il setup, nell' intestazione della funzione devo richiamere tutte le variabili che uso ed usare i puntatori o il reference per usarle.
Chiedevo se c'e' una possibilita' di creare come dei sottoprogrammi richiamati nel loop utilizzando al suo interno variabili globali .
Nei programmi plc per esempio ero abituato a mettere nel main solamente il richiamo dei sottoprogrammi i quali contenevano i vari codici del programma.
Grazie per le vostre risposte

Non sono pratico sulla visibilità tra file diversi, comunque invece di tante variabili si può passare il puntatore ad una sola struct contenente tutte le variabili di lavoro.