Costruire una stringa

Salve a tutti, ho un problema con la costruzione di una stringa da spedire tramite seriale. Siccome non si può spedire un oggetto di String, ho pensato di usare le stringhe in c, ma non sono tanto pratico.
La situazione è la seguente:

definisco una variale intera, es. int t;
la variabile assume un valore;
devo costruire e quindi spedire una stringa come la seguente: "D23", dove 23 è il valore della variabile t.

Ho letto che per concatenare più stringhe (che sono vettori di char) in c esiste l'apposita funzione concat (o altro nome simile), ma non riesco a convertire la variabile intera in un vettore di char (stringa), per poi concatenare il tutto. Potreste gentilmente dirmi come si fa?

Grazie...

Il modo più semplice è usare due serial prjnt, con la prima invii i caratteri con la seconda il valore della variabile, se devi inviare "D23" fai prima serial.print("D") e poi serial.print(t), in questo modo sulla seriale invii l'equivalente di "D23" in formato ASCII.

1 Like

ciao :slight_smile:

Ale_S:
Siccome non si può spedire un oggetto di String

ti riporto la guida ufficiale di Arduino, dove come vedi dell'esempio in fondo pagina, noti che si può spedire un oggetto di tipo String :slight_smile:
e ci va di fortuna che nella stessa guida si vede la concatenazione :slight_smile:

nel tuo caso, ti riporto un pezzo di codice del link che ti ho condiviso :slight_smile:

  stringThree =  stringOne + 123;
  Serial.println(stringThree);    // prints "You added 123"

detto ciò, la soluzione di astrobeed è MOLTO più funzionale e Leggera per la scheda :slight_smile:
il mio post è solo per completezza di informazioni :slight_smile:

MD

MatteoDerrico:
... noti che si può spedire un oggetto di tipo String

... credo che qui lo abbiamo ripetuto siano alla nausea ... usare gli oggetti di tipo 'String' su una piccola MCU come quella di Arduno è volersi fare del male ed andare incontro a problemi difficili da diagnosticare.

Per cui ... SCONSIGLIO vivamente la soluzione suggerita e appoggio pienamente quella di Astro che fa uso delle stringhe classiche del 'C'.

Guglielmo

difatti Guglielmo il mio ultimo post come ho scritto era solo per completezza di informazione, e nelle ultime righe anche io suggerisco la soluzione di Astro :slight_smile:

MD

MatteoDerrico:
difatti Guglielmo il mio ultimo post come ho scritto era solo per completezza di informazione ...

... e va benissimo suggerire alternative, purché ... indichi anche i problemi che la soluzione proposta comporta :wink:

Guglielmo

Grazie per il consiglio Guglielmo:)

MD

Guarda anche qui

Per stringhe complesse è molto utile

Rieccomi...
Vi spiego meglio cosa dovrei fare. Sto realizzando una casa domotica (plastico), nella quale è presente un sensore di temperatura (DHT11). La temperatura viene letta da Arduino e salvata in una variabile int. Devo visualizzare la temperatura su un app android (bluetooth electronics), il cui indicatore di temperatura che utilizzo semplicemente vuole in ingresso una stringa costruita nel seguente modo "D20", dove 20 è il valore della temperatura.
Ho provato a fare come dice astrobed ma l'app non mi riconosce il valore di t. Ho bisogno quindi di convertire l'intero t in un vettore di char (stringa in c) e poi concatenare il tutto, ma non ci riesco. Più che altro non so come convertire l'intero in vettore di char. Forse utilizzando la funzione itoa? Chiaramente se scrivo a mano la stringa es: "D20", l'indicatore virtuale mi segnale 20 come valore della temperatura.

Grazie ancora.

ciao :slight_smile:

scusa la domanda banale ma la stringa è composta anche dagli * ?
perchè se fosse così dovresti modificare leggermente la soluzione proposta da Astro :slight_smile:

Serial.print("*D");
Serial.print(t);
Serial.print('*');

questa soluzione è identica a scrivere Serial.print("*D20");

MD

Ci sono riuscito... ho usato la soluzione di astrobeed. L'altro giorno l'avevo provata di fretta e non funzionava, sbagliavo qualcosa.
Grazie ancora.