Parere in merito al layout del flusso del programma

leo72:

PaoloP:

leo72:
Cioè, se una certa azione la esegui solo 1 volta per ciclo del loop, è inutile infilarla in una sub-routine. Oltre ad aumentare i dati creati in RAM, aumenti anche la dimensione dello sketch nella Flash visto che il compilatore deve gestire salti e ritorni vari.

Non sono d'accordo.
Il compilatore dovrebbe accorgersi che la funzione è chiamata solo una volta e credo che la "ricopi" nel ciclo principale. Infatti il codice non aumenta neanche di 1 byte.

Il compilatore non è d'accordo con te :stuck_out_tongue:
Crea un piccolissimo sketch con un paio di semplici operazioni ed infilale nel loop. Compila e guarda la dimensione dello sketch.
Poi crea una sub-routine, infila quelle operazioni nella sub-routine e richiamala dal loop. Compila e guarda la dimensione dello sketch.
Anche se chiamata 1 sola volta, vedrai che la dimensione finale è leggermente maggiore (6 byte).

Si, hai ragione, ho fatto la prova con un semplice codice per verificare, ed effettivamente ci sono 6 byte in più se viene chiamata una funzione da loop, quindi forse devo rivedere qualche cosa, altrimenti mi ciuccia troppa RAM sta cosa! Hahahaaa, per ora non ci sono problemi apparenti, ma i programmi, mentre impariamo nuove cose crescono a dismisura perchè vogliamo includere le nuove conoscenze! quindi è facile che dopo tanto scrivere e provare, debuggare e riscrivere per ottimizzare un po, si finisce per incasinale il povero Ardu! Spero di tenere amente queste utilissime info dell'arte di programmare (per ora sono l'apprendista dell'apprendista dell'artista!! Haha!)

Ho provato anche a vedere la differenza tra dichiarare le variabili Global (fuori da setup() e loop() ) e dentro loop() e la fifferenza era apprezzabile, 600 bytes global, 466 bytes dentro loop()!!

Spero di non andare OT, perdonatemi se è così, Qualcuno mi può spiegare come passare le variabili? credo sia quando si fa:

void MiaRoutine(int var){ ... } dovrebbe essere quando metto tra le parentesi "int var" ma ancora non ho afferrato come avviene.