A few things:
-
Leave the receiver enabled when you are not transmitting. Enable in setup, then disable it for transmit and reenable. Don't mess with it when reading data.
-
Don't use delay when transmitting. You can use Serial1.flush() to make sure the character has been fully transmitted.
-
Don't use delay ever. Up to 10 characters could have arrived in those 10ms of delay. After receiving 7 characters, you will have delayed 70ms. That is enough time to overflow the 64-byte input buffer, and you will start losing characters.
void loop()
{
digitalWrite(Pin13LED, HIGH); // Show activity
if (Serial.available()) {
dataSend = Serial.read();
digitalWrite(SSerialTxControl, RS485Transmit); // Enable RS485 Transmit
Serial1.write(dataSend); // Send byte to Motor Driver
// Serial1.write('\r');
Serial1.flush();
digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit
digitalWrite(Pin13LED, LOW); // Show activity
}
digitalWrite(ledPin, HIGH);
if (Serial1.available()){
dataReceived = Serial1.read();
Serial.println(dataReceived);
digitalWrite(ledPin, LOW); // Show activity (look quickly! :-/)
}
}