Funzione Serial.print

Salve a tutti,
chiedo il vostro aiuto per la visualizzazione di testi e valori di variabili su monitor seriale, vorrei evitare la ripetizione della funzione Serial.print scrivendola una sola volta per visualizzare tutte le informazioni. Qualcuno sa se è possibile farlo?

int A=10,B=5,C=22;
void setup() {
   Serial.begin(9600);
   Serial.print("La somma di ");
   Serial.print(A);
   Serial.print(" e ");
   Serial.print(B);
   Serial.print(" è uguale a ");
   Serial.print(A+B);
   }

void loop() {
}

>disne: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More → Modify che si trova in basso a destra del tuo post) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra). Grazie :slight_smile:

Guglielmo

Puoi usare la snprintf()

int A=10,B=5,C=22;
char buf[50];
void setup() 
{  Serial.begin(9600);
    snprintf(buf,50,"La somma di %d e %d è uguale a %d",A,B,C);
    Serial.print(buf);
}
void loop() {}

oppure la libreria PString

Il mio consiglio personale, in casi come quello in questione, è di continuare a fare esattamente come stai facendo. È scomodo, ma è flessibile, semplice da capire e relativamente efficiente in quanto a utilizzo di flash e RAM.

Concordo con @succo.
Inoltre nessuno vieta di scrivere più istruzioni su una riga.
Serial.print("Testo "); Serial.print(A);

Grazie per le risposte, continuerò ad utilizzare il classico metodo.

Sto utilizzando le variabili decimali "float", con il medesimo programma visualizzo i numeri e i risultati decimali

float A=5.9,B=5.5;
void setup() {
    Serial.begin(9600);
    Serial.print("La somma di ");
    Serial.print(A);
    Serial.print(" e ");
    Serial.print(B);
    Serial.print(" è uguale a ");
    Serial.print(A+B);
    }

void loop() {
}

Il problema nasce nel momento in cui voglio acquisire le variabili decimale, durante l'acquisizione, infatti, digitando ad es. 1.5 acquisisce i valori 1 e il valore 5

int leggiIntero(){     //sostituendo int con float non cambia nulla
while(Serial.available()==0){};  
return(Serial.parseInt());
}

float A,B;
void setup() {
    Serial.begin(9600);
    Serial.println("inserisci il vaole di A");
    A=leggiIntero();
    Serial.println(A);
    Serial.println("inserisci il vaole di B");
    B=leggiIntero();
    Serial.println(B);
    Serial.print("La somma di ");
    Serial.print(A);
    Serial.print(" e ");
    Serial.print(B);
    Serial.print(" è uguale a ");
    Serial.print(A+B);
    }

void loop() {
}

Il fatto che stai usando parseInt() ti suggerisce niente? :wink:

Giustissima osservazione! Risolto! Grazie :sweat_smile: