Pages: [1]   Go Down
Author Topic: da string a byte?  (Read 290 times)
0 Members and 1 Guest are viewing this topic.
Carpi
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti.. E' da parecchio che non vengo sul sito e non programmo! Da un pò mi sono rimesso a farlo ma sono bloccato in un punto assurdo..
Dalla seriale ricevo 6 caratteri e 6 numeri, li metto in una variabile string e poi li uso a piacimento. Il problema nasce dal fatto che devo separare in numeri dai caratteri e passarli alle 2 uscite pwm. Sò che di solito si usano gli array, ma proprio non ci salto fuori.. Qualche aiuto?
Logged

L'estensione fisica dello stato mentale!

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao

postaci un esempio della stringa che ricevi così ti sappiamo indirizzare.. vi sono varie funzioni per separare una variabile stringa, oppure a volte conviene salvare tutto in un buffer di char e poi entrare nella singola "posizione".
Logged

lucadentella.it

Carpi
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La stringa è la seguente: cu1xxxcu2xxx. Dove xxx è la parte numerica che devo estrarre. Ho provato anche con un array, ma non sò come estrarre le due variabili..   smiley-roll-sweat
Logged

L'estensione fisica dello stato mentale!

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Usa il metodo Substring per estrarre la parte della stringa che ti interessa e la funzione atoi per convertire la "sottostringa" in int
http://arduino.cc/en/Reference/StringSubstring
Logged

lucadentella.it

Carpi
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho provato mille volta quel metodo, ma mi ritorna un errore..
Ti posto il codice:
Code:
void loop()
{
  if (Serial.available() > 0) { //Se sono presenti dati nel buffer
    while (Serial.available() > 0) { //finchè ci sono dati in seriale li legge e li aggiunge alla variabile
      valore_buffer[cont] = Serial.read(); //riempie il buffer con i dati in seriale
      cont ++;
      pausa(2);
    }
  }
    stringa_buffer = valore_buffer;
    for (int i = 0; i <10 ; i++) { //pulisco array
      valore_buffer[i] = 0;
    }
    cont = 0;
    if ((stringa_buffer.substring(0,1) == "s") && (stringa_buffer.substring(1,2) == "1")) { //se il comando è s indica lo stato della connessione
      Serial.println("#00Connected to Bloetooth.");
      digitalWrite(led_stato, HIGH);
      stato_connessione = 49;
    }
    else if ((stringa_buffer.substring(0,1) == "s") && (stringa_buffer.substring(1,2) == "0")) { //se lo stato è uguale a 0
      Serial.println("#00Disconnected from Bloetooth.");
      digitalWrite(led_stato, LOW);
      stato_connessione = 0;
      stop_motori();
    }
   
  if ((stato_connessione == 49) && (stringa_buffer.substring(0,1) == "c")) {
    if (stringa_buffer.substring(1,2) == "u") {
      motore = atoi(stringa_buffer.substring(2,3));

Ora come ora me ne dà altri, ma non me lo faceva fare.. Non è che devo usare una stringa di "appoggio" e poi convertirla?
tipo:
Code:
stringa_temp = stringa1.substring(2,3);
motore = atoi(stringa_temp);
Logged

L'estensione fisica dello stato mentale!

Carpi
Offline Offline
Newbie
*
Karma: 0
Posts: 26
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Risolto!! Ho usato una variabile temp come appoggio e l'ho convertita in un array. Poi Ho convertito l'array in byte ed il giocoè fatto!!!
Logged

L'estensione fisica dello stato mentale!

Pages: [1]   Go Up
Jump to: