Show Posts
Pages: 1 ... 38 39 [40] 41 42 ... 49
586  International / Generale / Re: Xbee - lettura dal seriale on: October 13, 2011, 09:28:25 am
se dopo che si pianta riparti una ventina dopo, allora si sta piantando l'arduino, e non lo stand-alone! secondo me l'arduino si resetta, e per caso alimentato via USB? se si, alimentalo via trasformatore!


Ma non puoi mettere il codice che stai usando ora?
Senza codice, sappiamo cosa ti fa, ma non come lo fa.
approvo, sciorty posta il codice, sia dle "trasmittente" ce del ricevente
Il codice c'era, ma in effetti chi lo guarda negli screen ? smiley-grin
Comunque:
Code:
#include <NewSoftSerial.h>
NewSoftSerial my (3,2);
unsigned long i;
void setup(){
  Serial.begin(9600);
    my.begin(9600);
}
void loop(){
  delay(10);
  my.print('a');
  delay(10); 
  my.print(map(analogRead(A0),0,1023,0,255),DEC);
  delay(10);
  my.print('b');
  delay(10);
  my.print(map(analogRead(A1),0,1023,0,255),DEC);
  delay(10);
  my.print('/');
  my.print(i++, DEC); 
}
Code:
#include <NewSoftSerial.h>
NewSoftSerial my (3,2);
void setup(){
  Serial.begin(9600);
  my.begin(9600);
  delay(100);
}
void loop(){
 if(my.available())
  Serial.println(my.read(), BYTE);
}

Si, lo alimento via usb. Se lo collego al trasformatore ovviamente dovrà rimanere l'usb per il seriale, quindi quali dei due l'arduino "preferirà" ?
587  International / Generale / Re: Xbee - lettura dal seriale on: October 11, 2011, 09:00:34 am
no, anche in quello che riceve stampi il numero attuale di loop.
Metti caso che quello che si blocca è il ricevente, se solo quello che invia manda il numero di loop, ti sembrerebbe che il bloccato è il trasmittente. invece se anche il ricevente stampa il numero di loop, noteresti che sì, il trasmittente smette di inviare il numero di loop, ma anche il ricevente smette di farlo..

la cosa ideale sarebbe da testare entrambi contemporaneamente: magari si impallano contemporaneamente!!!
E allora, stavolta quando ho provato i dati arrivavano normalmente. La differenza di collegamento sta solo in un condensatore(che era invertit polarmente) e nella mancanza dei piedini digitali 6 e 9 (troppa rabbia repressa, avrò tolto l'atmega dallo zoccolo con troppa violenza smiley-grin). Posso credere fossero quelli ? Io per sicurezza ho fatto un paio di prove perchè a volte me li faceva questi scherzetti ma sembra che si sia aggiustato :!

Edit: NON si è aggiustato:
Nel codice del tc ho aggiunto un "/"+numero che si incrementa ed ho notato questo:
a
0
b
0
/
4
2
7
a
0
b
0
/
a
0
b
0
/
4
4
5


Proprio quando riparte, in numero è incrementato di una ventina.. quindi lo standalone lavora nel frattempo.

Lesto, non ho ben capito la logica di quello che mi proponi tu..ma sul rx il numero che devo printare sul seriale deve essere lo stesso che ricevo dal tx oppure un altro long che creo ? Se la risposta è la seconda.. come faccio a capire da questo chi dei due smette di "funzionare" ?
588  International / Generale / Re: Xbee - lettura dal seriale on: October 09, 2011, 03:37:02 pm
uhmmm fai una bella cosa, ogni liip invia anche un numero che si incrementa ogni loop (usa un unsigned long), poi fai la stessa cosa anche sull'arduino che riceve. in questo modo capiamo chi dei due "rallenta"
Per "fare la stessa cosa sull'arduino che riceve" intendi inviare da quello che perora sta a ricevere?
589  International / Generale / Re: Xbee - lettura dal seriale on: October 09, 2011, 01:26:49 pm
uhmmm magari si resetta arduino? se nello stand alone metti il led al pin 13 te ne accorgi perchè quando arduino si resetta il led fa un lampeggio
Fatto, non è un reset smiley-sad
590  International / Generale / Re: Xbee - lettura dal seriale on: October 09, 2011, 12:03:31 pm
hai messo i gnd dei due arduino insieme?
?

domanda stupida da parte mia,stai usando gli xbee.

quegli "a" e "b" che vedo nel tuo esempio, immagino che li avrai aggiunti per capire quando inizia un numero e finisce l'altro..

non capisco cosa intendi per arrivo di dati ad intermittenza. l'interruzione forse deriva dal fatto che spegni il serial monitor?
Si, sono per capire quando inizia un numero e quando finisce l'altro.
Per intermittenza intendo dire che sul serial monitor ricevo
b
2
5
5
[..]
a
0
b
2
5
Qui si ferma(non sempre in un determinato punto)
Aspetto circa 1 secondo e riparte..
591  International / Generale / Re: Xbee - lettura dal seriale on: October 09, 2011, 09:59:22 am
hai messo i gnd dei due arduino insieme?
?
592  International / Generale / Re: Xbee - lettura dal seriale on: October 09, 2011, 09:18:14 am
anzichè usare la my.print usa una my.println, al lato ricezione dovresti vedere il numero inviato seguito da uno \n.

oppure usi my.write, che dovrebbe stampare 2 bute per ogni numero indipendentemente dal valore (in pratica la print converte OGNI CIFRA in una lettera, con la write i dati arrivano "puliti", ma illeggibili da un'essere umano)
Ora provo anche in questo modo, ma se leggi l'edit ho in parte risolto la parte di lettura. Il problema è ancora il fatto che i dati mi arrivino ad intermittenza ed interrompendosi in maniera strana tipo: a0b255a0b25
su di un piedino del pulsante per il reset ho messo il gnd, l'uscita dell'altro piedino finisce nel pin reset dell'atmega e sempre nello stesso pin c'è una resistenza di 10 kohm che viene dai 5 v :/
593  International / Generale / Re: Xbee - lettura dal seriale on: October 09, 2011, 03:48:19 am
Uhm. Mi pare tu stia sbagliando protocollo di trasmissione.

Se spedisci Serial.println(qualcosa) è normale che tu abbia tutto messo con i ritorni a capo.
Se spedisci una lettura numerica con Serial.println(valore, BYTE), è normale che ti arrivino caratteri senza senso.
Ad esempio, se spedisci Serial.println(map(AnalogRead(X), 0, 1023, 0, 255), BYTE) e ricevi un carattere casuale è normale perché tu non stai ad esempio spedendo il valore 123 (faccio un esempio) ma spedisci il byte che rappresenta quel valore, ossia il carattere ASCII corrispondente. Per ricevere un numero devi spedirlo come numero, ossia Serial.println(map(ecceccc), DEC).
Quando poi lo ricevi devi rimandarlo a video come lo hai ricevuto, ossia mettere:
while (my.available()) {
  Serial.print(my.read(), BYTE);
}

In questo modo ricostruisci ciò che ti arriva come lo hai ricevuto.
Riprendiamo l'esempio di prima. Mettiamo di spedire il numero 123.
Tu lo spedirai come "1"-"2"-"3"-"\n" (parte anche il carattere di ritorno a capo perché hai messo Serial.println)

Quando lo ricevi, leggerai il byte "1" e lo stamperai a video, poi il 2 a seguire, poi il 3 ed infine il ritorno a capo (CHR(13)->\n)


Forse mi sono espresso male, però al momento il problema non è il tipo di dato che ricevo, ma il dato stesso.
Ho messo la pull up come nell'articolo mettendo anche il bottone di reset ed ho usato la newsoft anche per lo standalone. Ho usato questi due codici come da te consigliato:
Code:
#include <NewSoftSerial.h>
NewSoftSerial my (3,2);
byte val;
void setup(){
  Serial.begin(9600);
  my.begin(9600);
}
void loop(){
 if(my.available())
  val= my.read();
  Serial.print(val, BYTE);
}

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

void setup(){
  Serial.begin(9600);
    my.begin(9600);
}
void loop(){
  my.print(map(analogRead(A0),0,1023,0,255),DEC);
  delay(10);  
  my.print(map(analogRead(A1),0,1023,0,255),DEC);
  delay(10);  
}


Adesso i problemi che avevo prima sono in parte risolti (i dati arrivano di continuo), ma ricevo una roba come 025555555555555550000000000000002550000000000000025555555555555000000000000000025555555555555,
che teoricamente sarebbe giusta perchè un'ingresso è sul gnd ed uno sui 5v ma evidentemente ci sono problemi di "tempo" o che so io..

EDIT: Ho tolto la variabile val mettendo Serial.print(my.read(), BYTE); ma, visto che ricevo 0-2-5-5-0-2-5-5-0, ho pensato che ci volesse un separatore in modo da identificare ed unire ciò che ricevo. Ma quando l'ho fatto, ahimè, i valori li ricevo di nuovo a tratti T,T
594  International / Generale / Re: Xbee - lettura dal seriale on: October 05, 2011, 02:18:07 pm
manca la resistenza di pull-up sullo stand alone... da 10kohm sarebe l'ideale, vedi http://itp.nyu.edu/physcomp/Tutorials/ArduinoBreadboard
Le resistenze sono solo per i led e il reset.. dove la dovrei mettere io ?

Uhm. Mi pare tu stia sbagliando protocollo di trasmissione.

Se spedisci Serial.println(qualcosa) è normale che tu abbia tutto messo con i ritorni a capo.
Se spedisci una lettura numerica con Serial.println(valore, BYTE), è normale che ti arrivino caratteri senza senso.
Ad esempio, se spedisci Serial.println(map(AnalogRead(X), 0, 1023, 0, 255), BYTE) e ricevi un carattere casuale è normale perché tu non stai ad esempio spedendo il valore 123 (faccio un esempio) ma spedisci il byte che rappresenta quel valore, ossia il carattere ASCII corrispondente. Per ricevere un numero devi spedirlo come numero, ossia Serial.println(map(ecceccc), DEC).
Quando poi lo ricevi devi rimandarlo a video come lo hai ricevuto, ossia mettere:
while (my.available()) {
  Serial.print(my.read(), BYTE);
}

In questo modo ricostruisci ciò che ti arriva come lo hai ricevuto.
Riprendiamo l'esempio di prima. Mettiamo di spedire il numero 123.
Tu lo spedirai come "1"-"2"-"3"-"\n" (parte anche il carattere di ritorno a capo perché hai messo Serial.println)

Quando lo ricevi, leggerai il byte "1" e lo stamperai a video, poi il 2 a seguire, poi il 3 ed infine il ritorno a capo (CHR(13)->\n)


Io finora pensavo il contrario !
Cioè: stampo in byte sul trasmittente, leggo i byte dal ricevente e poi me li trasformo in decimali interi o caratteri..
ora provo !


Grazie mille smiley-grin
595  International / Generale / Re: Xbee - lettura dal seriale on: October 05, 2011, 09:55:23 am
non usare la softwareserial, scariocati la newsoftwareserial
E allora, rieccomi qua.
Come vedrete posterò tante immagini per essere più chiaro possibile (non lo farei se non fossi disperato).
La situazione è questa: ho due arduini: uno in standalone con questo regolatore di voltaggio; ed uno attaccato ad una normale scheda arduino sui pin 2 e 3 (usando newsoftserial).
Ora,ho fatto diverse prove:
(le due entrate analogiche sono collegate al GND)
-inviando dallo standalone e ricevendo sulla scheda arduino il risultato è questo. Cioè una ricevuta disordinata e non costante.

-inviando dall'xbee attaccato al computer sulla scheda arduino il risultato è questo. Cioè normale, da aggiustare solo nel codice perchè la lettera viene printata di continuo.

-inviando dalla scheda arduino all'xbee sul computer il risultato è questo. Cioè normale, il "." in byte dovrebbe essere uno 0

E' chiaro che il problema sta nello standalone..ma non capisco dove !

Non prendetemi per scemo..disperato si, ma scemo non ancora.

Vi ringrazio tutti in anticipo e ringrazio lesto per la pazienza ed i consigli

 
596  International / Generale / Re: Xbee - lettura dal seriale on: October 02, 2011, 03:10:11 pm
togli il cast ad int in Serial.print(int(val));

se il problema persiste, è un errore di settaggio dei moduli xbee
Fatto, ma ricevo solo simboli:
´;

±;

µ;

²;

¶;

3;

·;

4;

1;

5;

²;

ÿ;

Comunque gli xbee sono settati bene perchè se i valori li leggo da xctu tramite un explorer, ricevo 1234567.. anche se con queste famose ondate con delay.
Sto impazzendo, ti ringrazio del supporto !
597  International / Generale / Re: Xbee - lettura dal seriale on: October 02, 2011, 02:25:28 pm
scusa, ma usa un print e invia i "123456789". poi dall'altra parte leggi i dati in un loop e li stampi a video. dovrebbe arrivarti 1 2 3 4 5 6 7 8 9

Code:
void setup(){
  Serial.begin(9600);
}
void loop(){
  Serial.print("1234567");
}
Code:
#include <SoftwareSerial.h>
#define rxPin 3
#define txPin 2
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
char val;

void setup(){
  Serial.begin(9600);
  mySerial.begin(9600);
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
}

void loop(){
  val = mySerial.read();
  Serial.print(int(val));
  Serial.println(";");
}
Ho provato così, magari(sicuramente) ho sbagliato a leggere i chat sulla ricevente. Comunque i risultati sono:
-79;

-106;

-106;

-74;

-74;

-75;

-76;

-77;

-78;

-79;

-73;

-74;

53;

-77;

-1;

Sempre tutti diversi e ad ondate di 15 alla volta ogni secondo circa.
598  International / Generale / Re: Xbee - lettura dal seriale on: October 02, 2011, 01:56:45 pm
Code:
Serial.write((byte)numero>>8);
Serial.write((byte)numero);
la print trasforma i dati in caratteri ascii, la write li mantiene inalterati.

Ok, ho fatto un :
Code:
x=map(analogRead(A0),0,1023,0,255);
  y=map(analogRead(A1),0,1023,0,255);
  Serial.write((byte)255);
  Serial.write((byte)x);
  Serial.write((byte)254);
  Serial.write((byte)y);
Però i valori che ricevo sono sempre sballati T.T
Esempio: Collego tutti e  due gli ingressi analogici ad un solo potenziometro.
I valori che mi printo sul seriale tramite la ricevente con:
Code:
#include <SoftwareSerial.h>
#define rxPin 3
#define txPin 2
SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
byte val,a,x,y;

void setup(){
  Serial.begin(9600);
  mySerial.begin(9600);
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);
}
void loop(){
  x = 0;
  y = 0;

        // Read first 2 bytes
        a = mySerial.read();
if(a == 255) // Next byte goes in x
   x = mySerial.read();
else if(a == 254) // Next byte goes in y
   y = mySerial.read();
else // Next byte gets ignored
   a = mySerial.read();

// Read next 2 bytes
a = mySerial.read();
if(a == 255) // Next byte goes in x
   x = mySerial.read();
else if(a == 254) // Next byte goes in y
   y = mySerial.read();
else // Next byte gets ignored
   a = mySerial.read();

      Serial.print(int(x));Serial.print(";");
      Serial.println(int(y));

}
sono:
255;0
255;0
..
Giro il pot e iniziano a sballare (i due valori dovrebbero essere uguali visto che provengono dalla stessa uscita del potenziometro) tipo:
0;0

0;0

222;0

220;0

0;222

e a volte si bloccano pure, facendo in modo che i valori mi arrivino a 10 a 10 con un delay di circa 10 secondi..
Non capisco tutto ciò.. mi sento strano perchè a quanto pare ho avuto solo io questo problema  !
Eppure la ricevente li legge bene gli ingressi analogici , c'è qualcosa che non va nell'invio o nella processazione dei dati ricevuti :\
599  International / Generale / Re: Xbee - lettura dal seriale on: October 02, 2011, 01:14:58 pm
il codice che hai usato legge 2 interi inviati usando la serrila.write, non la serial.print()
Se lo sostituisco l'errore che ricevo è: sketch_oct02a:8: error: invalid conversion from ‘int’ to ‘const uint8_t*’
Ma che differenza c'è tra write e print ?
600  International / Generale / Re: Xbee - lettura dal seriale on: October 02, 2011, 11:21:09 am
Ragazzi, non vi seccate ma qui mi sa che il problema sta alla base di qualcosa.
Ho provato anche a ricevere sul seriale "standard" e qindi ad utilizzare altri codici di altri post come:
Code:
byte a,x,y;

void setup(){
  Serial.begin(9600);
  pinMode(11,OUTPUT);
  pinMode(10,OUTPUT);
}

void loop(){
  x = 0;
  y = 0;

        // Read first 2 bytes
        a = Serial.read();
if(a == 255) // Next byte goes in x
   x = Serial.read();
else if(a == 254) // Next byte goes in y
   y = Serial.read();
else // Next byte gets ignored
   a = Serial.read();

// Read next 2 bytes
a = Serial.read();
if(a == 255) // Next byte goes in x
   x = Serial.read();
else if(a == 254) // Next byte goes in y
   y = Serial.read();
else // Next byte gets ignored
   a = Serial.read();

      analogWrite(10,int(x));
      analogWrite(11,int(y));

}
Sul tx:
Code:
Serial.print (255, BYTE);
  Serial.print (x, BYTE);
  Serial.print (254, BYTE);
  Serial.print (y, BYTE);

Ma niente,niente,niente ! Il peggio è che ricevendo sul seriale standard non posso stampare sullo stesso per visualizzare i valori, perchè andrebbe in confusione,come detto da un utente. Quindi uso i led per vedere i valori ma non corrispondono ai valori che mando.
Uno viene da un pot e l'altro (non avendo un altro pot) proviene dai 5v fissi.
Ci tolgo mano ? smiley-neutral
Pages: 1 ... 38 39 [40] 41 42 ... 49