Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Arduino Mega R32060从MAX485或USB TTL转换器接收数据_Arduino - Fatal编程技术网

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

通过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

我正在尝试接收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);
  }
}
#包括
#定义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的所有引脚)