Thanks in advance to anyone who has the patience to read all of this and help me learn. I’ve highlighted specific questions and pleas for help in red ![]()
I’m attempting to learn about serial communications, particularly how to use SoftwareSerial on a Sparkfun Redboard (Arduino Uno). However I’m having some trouble understanding the basics, even after going through some of the easy examples I found online.
I’ve seen a couple examples very similar to the one below (originally seen in this discussion, https://forum.arduino.cc/index.php?topic=161151.0), but I can’t get it to work. From my understanding, I should be able to connect by USB to the Arduino, load this sketch, and then whatever I type in the Arduino IDE serial monitor should get echoed back to me. (Additionally, if I had a device hooked up that was sending responses, this sketch would display the responses to the serial monitor, but I’m not doing that yet.)
I attempted to comment on the sketch below to illustrate how I understand the statements, but please correct my comments if I’ve misunderstood a concept.
#include<SoftwareSerial.h> //Include the SoftwareSerial library
//Setup the mySerial object. We will transmit to the object using Pin 3 and receive
//from the object using Pin 2
SoftwareSerial mySerial(2,3);
void setup()
{
mySerial.begin(9600); //Open the mySerial port for communication
Serial.begin(9600); //Open the serial port for communication
}
void loop()
{
if (mySerial.available()) //Has the mySerial object received something? (i.e. have we
//typed something into the serial monitor and transmitted
//it to the object using Pin 3?)
Serial.write(mySerial.read()); //If yes, read the data going to the object and
//display it to the serial monitor. Basically we are
//echoing what we sent.
if (Serial.available()) //Is there data waiting in the receive buffer of the serial port?
//(i.e. has the object transmitted something that was received
//on Pin 2 which is now waiting in the serial port receive
//buffer?)
mySerial.write(Serial.read()); //If yes, read what is in the serial buffer, and
//transmit it back to the object. I have particular
//trouble understanding this line. If mySerial sent me
//something and it’s sitting in the serial receive
//buffer, why wouldn’t we display it to the serial
//monitor? Instead it looks like we’re sending it right
//back to the mySerial object.
}
Thanks!
Travis