我正在尝试接收一些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);
}
}