Funzione printf di Arduino
-
Ottieni lo stesso output di
prinf()
usando le funzionisprintf()
eSerial.print()
insieme in Arduino -
Ottieni lo stesso output di
prinf()
usando solo la funzioneSerial.print()
in Arduino
![Funzione printf di Arduino](/img/Arduino/feature-image---arduino-printf.webp)
Questo tutorial discuterà un metodo per ottenere lo stesso risultato della funzione printf()
in Arduino.
Ottieni lo stesso output di prinf()
usando le funzioni sprintf()
e Serial.print()
insieme in Arduino
Arduino non fornisce la funzione printf()
. Ma se vuoi ottenere un output come la funzione printf()
, puoi ottenerlo usando le funzioni sprintf()
e Serial.print()
insieme. Per prima cosa, devi usare la funzione sprintf()
per formattare l’output e memorizzarlo in una variabile char
. Quindi utilizzare la funzione Serial.print()
per visualizzare la variabile sul monitor seriale.
int time = 0;
char buff[50];
void setup() { Serial.begin(9600); }
void loop() {
sprintf(buff, "the value is %d seconds", time++);
Serial.println(buff);
}
Nel codice sopra, il buff
è una variabile di tipo char
per memorizzare l’output formattato che vuoi mostrare sul monitor seriale. Si noti che questo metodo non è consigliato perché richiederà molto spazio per il codice. Invece, puoi usare la funzione Serial.print()
due o tre volte per ottenere lo stesso risultato della funzione printf()
. Inoltre, questo metodo non funziona per i numeri in virgola mobile. Devi convertirli in una stringa
per i numeri in virgola mobile, e poi puoi usare questo metodo.
Ottieni lo stesso output di prinf()
usando solo la funzione Serial.print()
in Arduino
Se il metodo sopra non funziona per te, ecco un approccio migliore da usare. Invece di usare il metodo sopra, puoi usare la funzione Serial.print()
solo per ottenere lo stesso risultato della funzione printf()
. Ma questa funzione non funzionerà per i numeri in virgola mobile. Per i numeri in virgola mobile, è necessario convertirli in una stringa e quindi è possibile utilizzare questa funzione.
int time = 0;
void setup() { Serial.begin(9600); }
void loop() {
Serial.print("the value is ");
Serial.print(time++);
Serial.println(" seconds");
}
Questo metodo ti darà anche lo stesso output del metodo sopra, ma è migliore e facile da usare.