通过Arduino Mega R32060从MAX485或USB TTL转换器接收数据
我正在尝试接收MAX485或USB TTL转换器与此代码的Arduino Mega R32060通过Arduino Mega R32060从MAX485或USB TTL转换器接收数据,arduino,Arduino,我正在尝试接收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
#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);
}
}
#包括
#定义SSerialRX 15
#定义SSerialTX 14
#定义SSerialTxControl 3
#定义RS485传输高电平
#定义RS485接收低电平
#定义引脚13 LED 13
软件串行RS485Serial(SSerialRX、SSerialTX);
int被接收;
int字节;
无效设置()
{
Serial.begin(9600);
引脚模式(引脚13LED,输出);
引脚模式(SSerialTxControl,输出);
数字写入(SSerialTxControl,RS485Receive);
RS485Serial.begin(9600);
}
void循环()
{
if(Serial.available())
{
数字写入(引脚13LED,高电平);
byteReceived=Serial.read();
Serial.println(byteReceived);
数字写入(SSerialTxControl,RS485Transmit);
RS485Serial.write(byteReceived);
延迟(10);
数字写入(引脚13LED,低电平);
数字写入(SSerialTxControl,RS485Receive);
}
if(RS485Serial.available())//查找来自其他Arduino的数据
{
digitalWrite(Pin13LED,高);//显示活动
byteReceived=RS485Serial.read();//读取接收到的字节
Serial.write(byteReceived);//在串行监视器上显示
延迟(10);
digitalWrite(引脚13LED,低);//显示活动
Serial.println(byteReceived);
}
}
针脚3是MAX485传输和重新选择模式的开关
但是,我可以从arduino完美地发送数据
但是条件
RS485Serial.available()
永远不会变为真。原因可能是什么?尝试使用串行
读取数据。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);
}
}
它是Mega 2560。它有4个串行接口,所以不要在Mega上使用SoftwareSerial。(并非Mega support SoftwareSerial的所有引脚)