Funzione printf di Arduino

Ammar Ali 12 ottobre 2023
  1. Ottieni lo stesso output di prinf() usando le funzioni sprintf() e Serial.print() insieme in Arduino
  2. Ottieni lo stesso output di prinf() usando solo la funzione Serial.print() in Arduino
Funzione printf di Arduino

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.

Autore: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Articolo correlato - Arduino Print