Pages: 1 [2]   Go Down
Author Topic: Inviare numeri e stringhe via Seriale (con xbee)  (Read 1439 times)
0 Members and 1 Guest are viewing this topic.
Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 725
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Appena ho l'arduino a portata ti faccio sapere  smiley ma che mi ricordi ho usato questo..
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 415
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, fammi sapere perchè ci tengo smiley

Io l'ho provato e purtroppo non mi fa il parsing correttamente smiley-sad
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 725
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Guarda, a me funziona quello.. Ho messo pure qualche piccolo accorgimento nel caso in cui si volessero inviare solo alcuni valori e non tutti, tipo a100c101;

Code:
#include <NewSoftSerial.h>
NewSoftSerial my(3,2);

char val;
String string="";
String a="";
String b="";
String c="";
int a_int,b_int,c_int;

void setup(){
  Serial.begin(9600);
  my.begin(9600);
}

void loop(){
 
 
 
  if(my.available()>0)
  {
    a=b=c=string="";
   
    val=my.read();
   
    while(val!=';'){
     if(my.available()>0)
     {
       string+=val;
       val=my.read();     
     }
    }
   
    Serial.println(string);
     
    for(int i=0;i<string.length();i++){
      if(string.substring(i,i+1).equals("a"))
      {
        i++;
        while(!string.substring(i,i+1).equals("b")&&!string.substring(i,i+1).equals("")){
          a+=string.substring(i,i+1);
          i++;
        }
      }
     
      if(string.substring(i,i+1).equals("b"))
      {
        i++;
        while(!string.substring(i,i+1).equals("c")&&!string.substring(i,i+1).equals("")){
          b+=string.substring(i,i+1);
          i++;
        }
      }
     
      if(string.substring(i,i+1).equals("c"))
      {
        i++;
        while(!string.substring(i,i+1).equals("")){
          c+=string.substring(i,i+1);
          i++;
        }
      }
     
    }
   
    if(!a.equals(""))a_int=stoi(a);
    if(!b.equals(""))b_int=stoi(b);
    if(!c.equals(""))c_int=stoi(c);
   
    Serial.print(a_int);
    Serial.print("--");
    Serial.print(b_int);
    Serial.print("--");
    Serial.println(c_int);
   

  }
 
 
 
}


int stoi(String text)
{
  char temp[20];
  text.toCharArray(temp, 19);
  int x = atoi(temp);
  if (x == 0 && text != "0")
  {
    x = -1;
  }
  return x;
}

Prova questo, magari hai una botta ci cu smiley-grin
Logged

Italy
Offline Offline
Full Member
***
Karma: 6
Posts: 102
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Attenzione, aggiungere delay(2000) prima del serial.begin(9600) rischio impallamento....
Logged

"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 415
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi da un errore di compilazione:

Quote
sketch_jul04b.cpp: In function 'void loop()':
sketch_jul04b:65: error: 'stoi' was not declared in this scope
sketch_jul04b:66: error: 'stoi' was not declared in this scope
sketch_jul04b:67: error: 'stoi' was not declared in this scope

in quale libreria è definita la funzione stoi()?
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 725
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E' nel codice postato, forse non l'ai vista  smiley-razz
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 415
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Forse sono sfortunato io.. quando provo il codice e tento di inviare una stringa del tipo "a123b1254c125" da serial monitor, non ottengo alcuna risposta smiley
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 725
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si si, però ho dovuto togliere la libreria newsoftserial perchè non mi funzionava bene e non mi leggeva nulla.
Utilizzo lo stesso codice, ma faccio tutto con Serial..

Aspetta, aspetta..
La Serial utilizza i pin 0 e 1 di Arduino, quindi se l'RX e il TX del tuo xbee sono attaccati a quei pin non puoi utilizzare contemporaneamente il Serial monitor. Personalmente non attaccherei gli xbee a quei pin neanche se non utilizassi il monitor
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 415
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E dove li attaccheresti? Configureresti due altri pin per emulare la seriale?

Comunque, il test l'ho fatto senza Xbee proprio perchè sapevo che con gli xbee collegati non potevo leggere nulla dalla seriale: però non mi ritorna alcun risultato smiley
Logged

Capo d'Orlando
Offline Offline
God Member
*****
Karma: 2
Posts: 725
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E dove li attaccheresti? Configureresti due altri pin per emulare la seriale?

E' quello che faccio! -> NewSoftSerial my(3,2);

Devi portare i piedini TX ed RX dell' xbee a quei pin di Arduino (ora non ricordo se sono al contrario, in caso inverti!)
Logged

Pages: 1 [2]   Go Up
Jump to: