通过Arduino Mega R32060从MAX485或USB TTL转换器接收数据



我正在尝试接收一些MAX485或USB TTL转换器,该代码适用于Arduino Mega R32060。

#include <SoftwareSerial.h>
#define SSerialRX        15
#define SSerialTX        14 
#define SSerialTxControl 3  
#define RS485Transmit    HIGH
#define RS485Receive     LOW
#define Pin13LED         13
SoftwareSerial RS485Serial(SSerialRX, SSerialTX);
int byteReceived;
int byteSend;
void setup()
{
Serial.begin(9600);
pinMode(Pin13LED, OUTPUT);
pinMode(SSerialTxControl, OUTPUT);
digitalWrite(SSerialTxControl, RS485Receive); 
RS485Serial.begin(9600); 
}
void loop()
{  
if (Serial.available())
{
digitalWrite(Pin13LED, HIGH);
byteReceived = Serial.read();
Serial.println(byteReceived);
digitalWrite(SSerialTxControl, RS485Transmit);  
RS485Serial.write(byteReceived);
delay(10);
digitalWrite(Pin13LED, LOW);
digitalWrite(SSerialTxControl, RS485Receive); 
}
if (RS485Serial.available())  //Look for data from other Arduino
{
digitalWrite(Pin13LED, HIGH);  // Show activity
byteReceived = RS485Serial.read();    // Read received byte
Serial.write(byteReceived);        // Show on Serial Monitor

delay(10);
digitalWrite(Pin13LED, LOW);  // Show activity 
Serial.println(byteReceived);
}
}

这里的引脚3是用于MAX485传输和复位模式的开关。

然而,我可以完美地从arduino发送数据。

但是条件RS485Serial.available()永远不会变为真。这是什么原因?

尝试使用Serial读取数据。RX 15和TX 14是Arduino Mega上的第三个串行。

这是用于从Serial3读取数据的MWE。

int val = 0;
void setup()
{
Serial.begin(9600);
Serial3.begin(9600);
}
void loop()
{
if (Serial3.avaliable() > 0) {
val = Serial3.read();
Serial.write(val);
}
}

最新更新