Serial.println("TESTO" + variabile) ??? Si puo' fare?

Ciao ragazzi
Mi stavo esercitando con uno sketch dove premendo un tasto (della tasiera del pc) accendi un led del circuito, e premendo un altro tasto spegni il suddetto led. Se pero' premi un'altro tasto, sul monitor esce la seguente scritta:

Tasto sconosciuto: tastopremuto (sarebbe la variabile, quindi il tasto che si e' premuto)
Premi H o L (i due tasti per mandare in High o Low il led)

Per fare cio' nello sketch e' scritto cosi:

Serial.print("Tasto sconosciuto: ");
Serial.print(tastopremuto);
Serial.println("Premi H o L");

Siccome io conosco Javascript, per risparmiare tempo ho provato a scrivere cosi:

Serial.println("Tasto sconosciuto: "+tastopremuto+"
Premi H o L");

Ma mi da errore...

In questo modo avrei avuto lo stesso risultato, ma scrivendo una sola "linea". Con il tag "
" si ha l'effetto di andare a capo. Ove non fosse possibile inserire il
, non fa niente. A me andrebbe bene anche solo tutto sulla stessa linea.

In javascript tutto cio' e' possibile. Con arduino no???

Grazie :slight_smile:

No, in C non puoi.
In Java/Javascript le stringhe sono degli oggetti mentre in C/C++ le stringhe sono vettori di caratteri null terminated.
Questo perchè C e C++ sono pensati per scrivere anche sistemi operativi e quindi sono "spartani" infatti non hanno neppure un gestore Garbage Collection. Java invece ha il G.C. ed è pensato per girare su PC con Sistema Operativo e con molta ram.

nid69ita:
No, in C non puoi.
In Java/Javascript le stringhe sono degli oggetti mentre in C/C++ le stringhe sono vettori di caratteri null terminated.
Questo perchè C e C++ sono pensati per scrivere anche sistemi operativi e quindi sono "spartani" infatti non hanno neppure un gestore Garbage Collection. Java invece ha il G.C. ed è pensato per girare su PC con Sistema Operativo e con molta ram.

Ah ecco :slight_smile:

Grazie mille :wink:

nid69ita:
No, in C non puoi.

Puoi eccome, il limite è la serial.print() non il C/C++, se usi la sprintf() per creare la stringa, poi la invii sulla seriale con serial.print(), puoi unire assieme testo/i e variabile/i formattati come ti pare.

Non con la sintassi di JavaScript che conosce @Rodrigo:

Serial.println("Tasto sconosciuto: "+tastopremuto+"
Premi H o L");

:smiley:

C'e' anche la libreria PString, carina per concatenare le stringhe (array di vettori):
http://arduiniana.org/libraries/pstring/

oppure

Serial.println("Variabile= " + String(variabile) + " eccola qui");

Io ODIO l'oggetto String ]:smiley: ]:smiley: ]:smiley: :grin:

Guarda qui: http://arduino.cc/en/Tutorial/StringConstructors

Per arduino puoi o usare l'oggetto String (con la S maiuscola) oppure usare un array di char (char[]) come si fa tradizionalmente in C.

Guardati la reference del sito, ci sono parecchi esempi.

In tutto questo, per andare a capo all'interno di una stringa non si usa
... quello è un TAG HTML. Per andare a capo devi usare la sequenza \n. Quindi nel tuo caso devi scrivere

Serial.println("CIAO\nBELLO");
Per ottenere:
CIAO
BELLO

Luciano