Sto usando la libreria SoftwareSerial su arduino nano.
Ho caricato il programma di test degli esempi
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop() { // run over and over
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
Chiudendo Tx su Rx non ho alcuna ricezione.
Però controllando con un oscilloscopio il pin 11(Tx) ho il segnale di uscita.
Tra l'altro ho due dispositivi, basati su arduino nano, che usano la stessa libreria e gli stessi pins, che sono regolarmente funzionanti da quasi 5 anni.
Non riesco a capire cosa ci può essere di differente se non la versione più aggiornata della libreria SoftwareSerial.
Ringrazio anticipatamente tutti coloro che vorranno darmi un aiuto.
Ringrazio per la risposta.
Il nano che sto usando è un clone, ha il bootloader di tipo vecchio.
Comunque lo Hw è identico agli altri due che funzionano da quasi 5 anni, con l'unica variante della versione Sw della libreria SoftwareSerial.
Farò un'ulteriore prova se riesco atrovare la vecchia versione di questa libreria.
Beh intanto "pulisci" il tuo primo post, perché hai fatto qualche copia/incolla dal tuo precedente, ma con una serie di "sporcizie" all'inizio.
Per venire al problema, non ho capito cosa intendi con "Chiudendo Tx su Rx". Puoi spiegare meglio sia le connessioni (quali pin hai connesso, e con quali?) sia le prove che hai fatto? Puoi magari anche postare il link diretto all'esatto Arduino Nano che hai, così capiamo meglio quale tipo di Nano stai usando? E come hai impostato la board sull'IDE?
Semplicemente si fa un ponte tra tx e rx; in qusto casi si fa un corto circuito tra il pin 11 (tx) ed il pin 10(rx).
Le prova conssite nen lanciare il programma e visualizzare la finestra del serial monitor dell'IDE.
Dopo la scritta relativa alla prima Serial.println: "Goodnight moon!" Sul monitor non compare altro.
Stessa cosa se, usando 2 PC, con duie IDE e due arduino nano, con 2 sketch identici, connettoil 10 di con lo 11 dell'altro e lo 11 con il qo dell'altro. Sui due monitor comare solo il primo messaggio e poi nulla.
Beh, il problema è proprio quello, non si può fare un loopback con la SoftwareSerial perché anche in documentazione è scritto (in pratica è come se fosse half-duplex):
Limitations of This Library
SoftwareSerial library has the following known limitations:
It cannot transmit and receive data at the same time.
Quindi non puoi semplicemente inviare dati su mySerial e aspettarti di leggerli indietro.
Io penso che tu debba provare collegando due Nano (ovviamente incrociando TX ed RX), oppure passare ad usare la UART (quindi pin 0 e 1, ma perdendo la possibilità di collegare un PC, oltre a doverli disconnettere quando carichi uno sketch).