Citazione:
Originalmente inviato da gRiNgO grazie mille e complimenti per la competenza!  |
Comunque nel tuo programma vedo due cosucce che non mi piacciono proprio...
la prima usare un float.... non serve
500/1024 = 0.488 approssimiamolo a 0.48
uint16_t temp;
temp=analog_read(analog_pin);
temp=((temp*100)/48);
siccome tuttavia temp può arrivare a 1024 temp *100 eccederebbe 65535
allora riscriviamo come:
temp=((temp*25)/12);
a questo punto temp contiene la temperatura moltiplicata per 100
ti lascio il compito a casa per capire come dividerla e metterci il punto.
Suggerimento... lavora sulla stringa prodotta da itoa.
se comunque insisti nel usare i float:
Con il tuo codice:
Dimensione del file binario dello sketch: 4.904 bytes (su un massimo di 32.256 bytes)
sostituisci quell' 5.0*temp*100.0 con 500.0 *temp
Dimensione del file binario dello sketch: 4.892 bytes (su un massimo di 32.256 bytes)
12 bytes risparmiati....
Comunque....
regola numero uno: non usare float se non ci sei costretto
regola numero due: per quanto possa essere buono un compilatore, l'ottimizzazione è meglio se la fai tu, non fare due moltiplicazioni se puoi farne una...