Mentre lavoriamo con Arduino dobbiamo stampare più dati su un monitor seriale. Normalmente Seriale.stampa La funzione viene utilizzata ma oggi evidenzieremo un'altra funzione denominata sprintf e guarderemo come questa funzione aiuta a stampare più variabili in una singola riga sul monitor seriale.
Usando seriale.stampa()
Normalmente quando vogliamo stampare una variabile o un risultato di output, utilizziamo serial.print () o seriale.println () per stampare ogni risultato nella riga successiva. Supponiamo che se abbiamo più variabili, dobbiamo scrivere numeri di righe per la stampa seriale a seconda del conteggio delle variabili totali.
Ecco l'esempio che illustra l'uso del seriale.stampa():
Nell'esempio sopra abbiamo inizializzato gli numeri interi A, B e C. Per stampare tutte e tre le variabili su un monitor seriale dobbiamo scrivere separatamente un codice di stampa seriale per ognuno. Qui abbiamo usato tre variabili che ci portano a scrivere sei righe di codice solo per mostrarci sul monitor seriale. Ora immagina di scrivere un codice per cinque o 10 variabili e stamparle su un monitor seriale.
Questo è quando arriva la funzione sprintf (), discutiamo di come stampare tutte e tre le variabili in una singola riga di codice.
Stampa più variabili utilizzando la funzione Arduino sprintf ()
Lo sprintf () generalmente rappresenta "Stampa di stringa". A differenza della normale stampa seriale, non mostra direttamente l'output di variabili sul monitor seriale prima memorizza l'uscita all'interno di una variabile Char specificata respingente.
IL sprintf () consente all'utente di inviare un output formattato a un array di carbone in cui verrà memorizzato il risultato. Per mostrare la stringa in cui le variabili sono formattate, il seriale.viene utilizzata la funzione print ().
int sprintf (char * str, const char * formato, ...);
Come usare Arduino Sprintf ()
Lo sprintf () è utile quando dobbiamo stampare più variabili in una singola riga, usando le tre righe di codice che possiamo scrivere tutte le variabili che vogliamo. Ecco la sintassi di base della scrittura di più variabili usando Sprintf ():
Char Buffer [40];
sprintf (buffer, "somma del numero %d e numero %d è %d", a, b, c);
Seriale.println (buffer);
Codice di esempio
Ora stamperemo il codice sopra utilizzando il sprintf () funzione.
Esaminiamo ora ogni riga di codice in dettaglio.
Primo nel codice inizializziamo la comunicazione seriale usando il seriale.Inizia () e impostare il tasso di baud su 9600. Successivamente la sezione Loop inizializza tre variabili A, B e C. La somma delle prime due variabili A e B verrà memorizzata nella terza variabile C. Ora vieni nella parte principale del codice.
Char Buffer [40];
La dimensione dell'array di caratteri deve essere più grande in quanto può facilmente archiviare variabili di uscita e testo. Conta il numero di caratteri necessari per archiviare e creare il buffer con le stesse dimensioni.
sprintf (buffer, "somma del numero %d e numero %d è %d", a, b, c);
La riga successiva nel codice è la funzione Sprintf () effettiva. Ci vogliono 2 argomenti; Il primo argomento memorizzerà il personaggio all'interno dell'array di buffer. Il secondo argomento è la stringa che vogliamo creare. Qui per visualizzare la variabile nella stringa che abbiamo usato Specificatori di formato.
Il specificatore del formato è il segno %seguito dalla lettera nota come Carattere di formato. Gli specificatori del carattere sono la lettera dopo % segno. Entrambi dicono lo sprint () quale tipo di dati verrà utilizzato per i dati disponibili.
Alcuni specificatori di carattere comuni sono:
Carattere | Tipo di dati |
---|---|
d o i | Intero decimale firmato |
u | Intero decimale non firmato |
S | Stringa di caratteri |
Nell'esempio sopra abbiamo inizializzato a tre specificatori di formato utilizzando %D Ciò significa che vogliamo che 3 variabili siano archiviate nella stringa di output come Intero decimale firmato. Per ottenere i valori a queste tre variabili, 3 argomenti vengono aggiunti subito dopo la stringa. Per ogni specificatore del formato dobbiamo passare un valore separato e ciascuno di essi separati da virgola.
Nota: Le funzioni Sprintf () in Arduino non possono gestire i valori dei punti mobili. Quindi, se dobbiamo stampare un numero decimale qualcosa come 3.14 o 12.12, prima dobbiamo convertire quel valore fluttuante in una stringa, quindi stampare sullo schermo. Una funzione dtostrf () è comunemente usato per farlo.
Conclusione
Durante la programmazione della scheda Arduino dobbiamo cercare tutte le tecniche e le funzioni disponibili in grado di ottimizzare il nostro codice. Avere un codice minimalista ed efficiente aiuta a eseguire Arduino velocemente. Durante la stampa dei dati sul monitor seriale, utilizziamo la funzione di stampa seriale ma qui abbiamo coperto come la funzione sprint () può aiutare Arduino a stampare più variabili su una singola riga.