Problema stringa & array.. + serial.read

Dovrei passare trmite la seriale questa stringa: “<C:10:20:30:40>”

ma arduino la riceve a caratteri… <…C…:… ecc ecc

in piu dovrei dividere ad ogni “:” ed inserirla in un array… Es: Stringa = …

void loop() {
if (Serial.available()>) {
char c = Serial.read();
if(c == ‘<’)
{
contatore = 0;
}
else if(c == ‘>’)
{
for (int i=0; i <= conta; i++){
if(buffer == ‘:’){

  • contatore++;*
  • } else {*
    _ stringa[contatore] = stringa[contatore] + buffer*;_
    _
    }_
    _
    }*_

* } else {*
* buffer[conta++] = c;*
* }*
* for (int b=0; b <= contatore; b++){*
_ Serial.println(stringa**);
}
}
}**
HELP PLZ!! :frowning:_

Se ti ho capito bene dalla stringa mandata vuoi estrarre i 4 numeri e memorizzarle su 4 variabili? Ciao Uwe

La trasmissione seriale è una trasmissione a singoli byte, qualunque cosa tu invii. Sta a te in ricezione ricomporre i dati.
Devi trovare un “protocollo” di trasmissione.

Ad esempio, se i valori non superano 90 (10-20-30 ecc) puoi semplicemente spedire il codice ASCII corrispondente.
Quindi “<” lo invii tal quale (è già un carattere ASCII) mentre 10 lo spedisci sulla seriale come byte, così che venga convertito nel carattere ASCII 10 ed alla ricezione non devi far altro che assegnarlo direttamente ad una variabile.

sono riuscito a separare i valori in array... variabile += ecc.. ecc.. ora dovrei convertire la stringa in "long" o "int" quale comando?

Un int su Arduino sono 2 byte. Da PC spedisci il numero nel formato byteAlto/byteBasso e sull’Arduino ricomponi il numero riassemblando i 2 byte:
int=(byteAlto<<8) || byteBasso

Per un long, su Arduino si usano 4 byte. Fai lo stesso spedendo 4 byte dal PC.

no, mi sono perso qualcosa.. :drooling_face:

io ho un'array con dentro: uscita[0]="10"; uscita[1]="20"; uscita[2]="30";

ma se lo mando al servo.. vuole int...

Devi spedire i corrispondenti valori in byte. Converti la stringa in byte e poi spedisci il byte. Stai spedendo dal PC? Avrai una funzione per convertire una stringa in un valore, giusto? Bene, la usi per spedire la stringa "10" convertita in numero. Quindi "10" equivale al valore 10. Spedisci un byte dal valore 10 e dall'Arduino leggi un byte il cui codice ASCII è 10. Assegnandolo ad una variabile, assegni il valore 10. Poi questa la passi al servo.