Go Down

Topic: [RISOLTO] Serial HW e SoftwareSerial compatibilità (Read 1 time) previous topic - next topic

Bartleboom

Jan 20, 2013, 10:56 am Last Edit: Jan 22, 2013, 09:55 am by Bartleboom Reason: 1
Buongiorno e buona domenica a tutti,
sto provando a far comunicare un arduino (master) con altri 3 arduino (slave) mediante seriale. In pratica il master fa da smistatore dei dati che riceve sulla seriale hw (Pin 0 e 1) e le trasmette ai tre slave tramite SoftwareSerial (con altre 3 coppie di pin).
I 3 arduino slave ricevono sulla seriale hw. Ora credo che si perdano dei bytes durante la trasmissione.
Non sono compatibili tra loro USART e la seriale software?

Grazie e a presto.

BB

Bartleboom

Per completezza inserisco il codice del master:

Code: [Select]
#include <SoftwareSerial..h>

SoftwareSerial mySerial(2,3);
int incomingByte[5];


void setup() {

mySerial.begin(9600);
Serial.begin(9600);
}

void loop() {

if (Serial.available() >= 5) {

for (i=0;i<5;i++) {

incomingByte[i] = Serial.read();

}

for (i=0;i<5;i++) {

mySerial.write((byte)incomingByte[i]);

}

}

}


e il codice dello slave:

Code: [Select]
int incomingByte[5];

void setup() {
Serial.begin(9600);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);

}

void loop() {

if (Serial.available() >= 5) {

for (i=0;i<5;i++) {

incomingByte[i] = Serial.read();

}

digitalWrite(5, incomingByte[0]);
digitalWrite(6, incomingByte[1]);
digitalWrite(9, incomingByte[2]);
digitalWrite(10, incomingByte[3]);
digitalWrite(11, incomingByte[4]);


}
}

uwefed

Il problema dovrebbe essere che non tutte le 3 Seriali Sw possano ascoltare nello stesso tempo.
Soluzioni:
* Usa un arduino mega, quello ha 4 seriali (una collegata alla USB e altre 3 libere.
* usa un protocollo richiesta dati. Il master chiede dati e lo slave chiamato risponde. cosí il devi ascoltare sempre solo una seriale SW.
* se le distanze non sono troppo alte (1m) puoi usare l' I2C, con dei integrati di amplificazione puoi allungare la distanza I2C.
Ciao Uwe

leo72


Il problema dovrebbe essere che non tutte le 3 Seriali Sw possano ascoltare nello stesso tempo.

Il problema è questo. Puoi istanziare molte seriali SW ma solo 1 può essere messa in ascolto:
http://arduino.cc/en/Reference/SoftwareSerialIsListening


Bartleboom

Il problema non credo sia questo. Nel codice del master l'unica seriale in ascolto è quella hardware Serial, mentre nell'esempio pubblicato sopra la SotftwareSerial trasmette solamente.
La mia domanda è una SoftwareSerial può trasmettere senza problemi ad una Serial hardware?

Go Up