Buongiorno...
sono alle prese con la libreria SoftwareSerial vorrei far comunicare un arduino UNO con un MEGA ma non capisco cio che non funziona.
Chi sa come posso fargli passare un codice che dopo analizzo con una serie di "if"??
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
La seriale legge un byte alla volta. Puoi modificare il codice inserendo un while per leggere tutto il messaggio. Devi, inoltre, crearti un buffer per registrare i dati in arrivo.
si lo so per la mega, ma a me serve come test per un standalone, nei miei sketch ho cercato di semplificare il circuito in modo da farlo restare in ascolto ma non capisco se spedisce o no...
effettivamente non li ho resi costanti i pin, sta sera provo...
L'ho trovato in uno sketch sul sito ieri cercando di farlo funzionare, ed ho provato ad adottarlo... Mi sembrava logico che uno era come ingresso ed uno come uscita...
L'ho trovato in uno sketch sul sito ieri cercando di farlo funzionare, ed ho provato ad adottarlo... Mi sembrava logico che uno era come ingresso ed uno come uscita...
su che sito?
Cmq non l'ho mai usato, nè visto usare, e mi sa pure che non è molto igienico...
Cmq non l'ho mai usato, nè visto usare, e mi sa pure che non è molto igienico...
Ok, poi riprovo senza, il sito or ora non me lo ricordo, ieri e domenica ne ho letti 1000 sta sera vedo se lo ritrovo. Comunque se tu non lo usi poi lo elimino, mi serve solo riuscire a farli parlare l'un l'altro per capire come funziona, poi me lo studio per benino... Il problema e che in giro non ho trovato la comunicazione tra 2 arduino in seriale, ma solo in i2c (ottima se vicini). Sono riuscito anche a pilotare dal pc gli ingressi dell'arduino sulla seriale, ma tra i 2 arduino ancora nulla.. Non capisco manco se comunicano tra loro o se tutto tace...
Non capisco manco se comunicano tra loro o se tutto tace...
Il codice che hai postato sopra, non funziona perchè sul mega non leggi da seriale, ma scrivi. Anche se facessi un read al posto di un write il risultato (come ha detto qualcuno prima di me) non stampi a video il mesaggio ricevuto.....quindi come ti accorgi se la trasmissione è avvenuta con successo? Inoltre perchè usi la software serial sul Mega? hai a disposizione 4 seriali hardware da usare a tuo piacimento. Ultima cosa, prima di Serial.begin nel setup aggiungi sempre un delay(2000), perchè potresti bloccare la seriale. certo la situazione è di facile recupero, ma percè perdere tempo cercando di beccare il momento giuto pr rilasciare il reset?
una delle ultime discussioni a rguardo: http://arduino.cc/forum/index.php/topic,112680.0.html
N.
uso la libreria perche con il mega sto provando e vorrei passare ad uno standalone.
nello sketch mega ce un read da mySeriale e print sulla seriale normale.
uso la libreria perche con il mega sto provando e vorrei passare ad uno standalone.
nello sketch mega ce un read da mySeriale e print sulla seriale normale.
ottimo il consiglio della delay 2000 iniziale...
Non sono esperto in standalone, anzi non ne ho mai fatto uno, quindi continuo a non capire la necessità di usare le seriali software sul mega, mica sono legate alla scheda arduino, ma al micro 2560. Corregetemi se sbaglio. In realtà ti volevo sviare dalle software serial perchè ipotizzo siano state scritte per micro con una sola porta seriale, supponendo che non ce ne fosse necessità per micro con più serial. Anch'io c'ho sbattuto la testa se ti interessa, fino a quando ho letto (era semplicissimo) il reference softwareSerial, che riporta:
Limitations
The library has the following known limitations:
If using multiple software serial ports, only one can receive data at a time.
Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
Not all pins on the Leonardo support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
Quindi ricevendo sulla 2 (se nn ricordo male) non può funzionare. Io personalmente ho usato i 52 e 53, (ma hai una vasta scelta) per poi abbandonare le software ed abbracciare le hardware. http://arduino.cc/hu/Reference/SoftwareSerial
N.
Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
Azz.. Questo mi piace come logica mi fa capire parecchie cose... ora provo...
quindi continuo a non capire la necessità di usare le seriali software sul mega
La mega non considerarla tale, è una scheda come un altra per fare esperimenti che NON utilizzerò per il progetto finale
Ciao medimax, nell'esempio del playground non fa vedere la voce const int rxPin = 2; ma mette direttamente il numero del pin all'interno della SoftwareSerial mySerial(rxPin,txPin); .
Mi chiedo se hai voglia di provare a vedere se funzionalo stesso