Go Down

Topic: 2 arduino con SoftSerial (Read 916 times) previous topic - next topic

m.alverman

Buongiorno a tutti.

Vorrei provare a far 'parlare' due arduino con la libreria SoftSerial.
Tanto per cominciare vorrei memorizzare in maniera on/off lo stato di 1 pulsante su arduino che funge da master sull'arduino che funge da slave.

Cioè:
premo il pulsante 1 su arduino master
Invio il dato
Ricevo il dato su arduino slave
memorizzo il valore in una variabile
invio dallo slave al master il valore della variabile per la verifica

Avevo intenzione di inviare via seriale una cosa di questo tipo:

BT01UP
oppure
BT01DW

Come posso inviare stringhe su seriale ?
Esiste qualche esempio che usi SoftSerial in maniera Master / Slave

Grazie, Alberto

Federico

Forse non ti interessa o forse non puoi per altri motivi, ma hai provato a guardare gli esempi "slave/master" per far comunicare due arduino via i2c? Sono inclusi come esempi base nell'ide, e sono semplicissimi.
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

m.alverman

E se avessi anche un display collegato in 12c funzionerebbe uguale ?

Grazie, Alberto

Federico

Certo, sugli stessi pin usando il bus i2c!
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

m.alverman

Ah !!
Ok provo a far qualcosa :)

Grazie molte

Alberto

m.alverman

Come faccio a mandare una stringa con questo codice:

      String CMotor = (CurrentMotor);   
      String SnD = ("M"+CMotor+"UP");
      Wire.beginTransmission(4);         // transmit to device #4
      Wire.send(SnD);                        // sends 5 bytes 'MXXUP'
      Wire.endTransmission();            // stop transmitting

Mi da errore in compilazione

Grazie, Alberto

m.alverman

Devo abbandonare i2c perchè poi la distanza tra gli arduino sarà di 16 metri.
Quindi devo andare di SoftwareSerial.
Ma per collegare fisicamente i due arduino devo aggiundere dell'elettronica o bastano i due fili rx/tx ?

Grazie, Alberto

Federico

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

lesto

solo i fili.
inizializzerai l'oggetto SoftSerial passandogli i pin che vuoi usare come tx/rx, stessa cosa nell'altro arduino.
ricrda che tx1 va con rx2 e rx1 con tx2 (1e 2 cono i 2 arduino)
a questo punto puoi usare l'oggetto come se fosse la normale seriale, begin,  read, print, avaiable ecc....
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

m.alverman

Sto provando ma mi incasino.

Provo ad inviare da arduino 1 con:
mySerial.print("CIAO");

E stampo su serial arduino 2 con:
char someChar = mySerial.read();
Serial.println(someChar);

ma mi escono caratteri strani :)

Federico

Sicuro di star utilizzando la stessa velocita' di seriale su entrambi?
Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

m.alverman

Si !!

Ho dovuto fare così:

void loop() {
  bytesread = 0;
   
  while(bytesread<4) // read 4 digit code
  {
    val = mySerial.read();
    code[bytesread] = val; // add the digit
    bytesread++; // ready to read next digit
  }
    Serial.println(code);
}

Una cosa piacevole è che ho collegato i 2 Arduino con 30 metri di cavo schermato
(quello microfonico a due + schermatura) e sembra non perdere un colpo :smiley-mr-green:

Grazie, Alberto

Go Up