Serial print tenerlo solo nella fase di test?

Ciao a tutti,
Ho creato un progetto che per controllo fino alla fase finale
scriveva nel monitor la posizione di un motore e la distanza percepita dal sensore a ultrasuoni.

Ora mi sono chiesto, visto che non viene utilizzata nessuna tenuta di traccia di questi dati durante il funzionamento, perché l'esito finale è dato da un buzzer e due led, è il caso di risparmiare sul processo eliminando i dati trasmessi al monitor (che in realtà non trasmette)? o si può aggiungere un controllo che se non trova la porta salta le parti?
quale è la cosa migliore da scrivere?
grazie

La migliore cosa in questi casi è usare il preprocessore ed usare le #define ...

In testa la programma definisci o NON definisci un qualche cosa, ad esempio, in testa al programma metti:

#define _TEST_

Dopo di che nel corso del programma verifichi se TEST è definito ... se SI includi delle righe se NO le escludi, il tutto, molto semplicemente con:

#ifdef _TEST_
  riga che vuoi eseguita in test
  riga che vuoi eseguita in test
  riga che vuoi eseguita in test
  ...
#endif

... tutto quello che sta tra il #ifdef ed il #endif viene incluso nella compilazione solo se TEST è stato definito ... se commenti la riga con #define TEST allora il codice NON verra incluso e neanche compilato ottimizzando sia la memoria che la velocità di esecuzione :slight_smile:

Guglielmo

grazie.

Dopo di che nel corso del programma verifichi se TEST è definito ... se SI includi delle righe se NO le escludi, il tutto, molto semplicemente con:

Caspita! Avevo capito la logica di questa cosa ma non riuscivo a trovarne un'utilità pratica quindi mai usata. Sono bastate poche parole per aver illuminato il mio cervello trovando tante idee per i miei progetti passati e futuri. Grazie Guglielmo. ;D

Il preprocessore contiene tantissime utili direttive ... allego un pdf con varie spiegazioni :wink:

Guglielmo

The C Preprocessor.pdf (470 KB)