[Risolto] Serial.print(?);

Ciao a tutti ho un problema, dovrei inviare una stringa via seriale, ci sono riuscito ma devo fare una cosa particolare ora, devo comporre una stringa mista parole e mista numeri, la seconda vorrei che sia una variabile decisa da me, e fattibile?

grazie

Tipo:

int valore = analogRead(0);
Serial.print("valore=");
Serial.println(valore);

?

in questo modo non mi prende la variabile, spiego meglio il formato della stringa deve essere questo:

FA00007100000;

quindi il primo FA e fisso il resto numerico ma poi trasformato in stringa di testo, ma che deve essere una variabile, decisa da me.

Sinceramente... non ho capito la domanda. :cold_sweat: :expressionless:

Il numero "trasformato in stringa" deve avere sempre la stessa lunghezza ? In tal caso vanno aggiunti manualmente degli zeri di "padding".

E comunque mi pare che - a parte la questione della lunghezza complessiva - il mio esempio sia quello che ti serve.

allora io devo inviare tramite usb FA00007100000; e fin qui ci sono se la scrivo:

serial.print("FA00007100000;")

il programma che mi legge la porta usb risponde e fa quello che deve fare, ma io devo cambiare il valore 00007100000 con un variabile e non so come manipolare una stringa e poi riunirla :slight_smile:

@tuxduino: ho provato ma non funziona

Hai provato a vedere qui e dintorni? --> http://arduino.cc/en/Tutorial/StringConstructors

Iz2rpn:
@tuxduino: ho provato ma non funziona

Che cosa hai provato ? Cosa vuol dire "non funziona" ? Posta codice, risultato atteso e ottenuto. Qualsiasi informazione aggiuntiva può essere utile ad aiutarti. Per ora siamo abbastanza sul vago...

eccomi qui dopo aver tirato qualche testata al monitor

int c = 7100000;

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
Serial.print("FA00007100000;");
}

void loop() {

// converting a constant string into a String object:
String stringTwo = String("FA0000");
String stringTree = String(c);
// concatenating two strings:
String stringOne = String(stringTwo + stringTree + ";");
// prints "This is a string with more":
Serial.println(stringOne);

// do nothing while true:
while(true);

}

mi restituisce un valore finale strano non corrisponde a quello che voglio io ma cmq ora il codice funziona e il programma risponde

il processo è giusto ma sto sbagliando, non riesco a visualizzare la variabile "c" come stringa

Iz2rpn:
int c = 7100000;

Ora ti tiro le orecchie!! ]:smiley: ]:smiley: ]:smiley:

int

Description
Integers are your primary datatype for number storage, and store a 2 byte value. This yields a range of -32,768 to 32,767 (minimum value of -2^15 and a maximum value of (2^15) - 1).

usa unsigned long :grin:

e io me le faccio tirare ora funziona riesco a fare quello che voglio grazie ragazzi, cosi imparo a non leggere la descrizione delle variabili :stuck_out_tongue:

Potresti usare Serial.print() multiple.

Cerca in rete sprintf().

@tuxduino: mmmh no sarebbe troppo un caos di codice in questo modo ho più flessibilità nel codice dove posso controllare solo un tipo di dato, questo dato che sto modificando deve cambiare la frequenza radio della mia radio scusate il gioco di parole e ora funziona perfettamente, il primo serial.print mi serve per settare la frequenza di partenza, ho messo quella perché ci sono affezionato :stuck_out_tongue:

codice rivisitato:

unsigned long b = 8100000;

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
Serial.print("FA00007100000;");
}

void loop() {

// converting a constant string into a String object:
String stringTwo = String("FA0000");

String stringTree = String(b);

// concatenating tree strings:
String stringOne = String(stringTwo + stringTree + ";");
// prints FA00008100000; for radio
Serial.print(stringOne);
delay(1000);

while(true);

}