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
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.
E se avessi anche un display collegato in 12c funzionerebbe uguale ?
Grazie, Alberto
Certo, sugli stessi pin usando il bus i2c!
Ah !!
Ok provo a far qualcosa
Grazie molte
Alberto
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
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
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....
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
Sicuro di star utilizzando la stessa velocita' di seriale su entrambi?
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
Grazie, Alberto