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与Arduino之间通过软件串行通信_Arduino - Fatal编程技术网

Arduino与Arduino之间通过软件串行通信

Arduino与Arduino之间通过软件串行通信,arduino,Arduino,我有两个Arduino Leonardo。 这两个Arduino板可以通过软件串行库相互通信吗?(不是系列1,谢谢)是的,您可以在每个Arduino上使用任何备用数字管脚是的,您可以在每个Arduino上使用任何备用数字管脚当然可以。您可以使用所有PWN引脚,3、5、6、10、11、13。当然可以。您可以使用所有PWN管脚,3、5、6、10、11、13。是的,您可以使用数字管脚。只需将两个Tx和Rx连接起来即可是,您可以使用数字管脚来实现。简单地把Tx连接到RX< P>是的,但是你总是要考虑AR

我有两个Arduino Leonardo。
这两个Arduino板可以通过软件串行库相互通信吗?(不是系列1,谢谢)

是的,您可以在每个Arduino上使用任何备用数字管脚

是的,您可以在每个Arduino上使用任何备用数字管脚

当然可以。您可以使用所有PWN引脚,3、5、6、10、11、13。

当然可以。您可以使用所有PWN管脚,3、5、6、10、11、13。

是的,您可以使用数字管脚。只需将两个Tx和Rx连接起来即可

是,您可以使用数字管脚来实现。简单地把Tx连接到RX

< P>是的,但是你总是要考虑ARDUNO是基于McCr,而不是微处理器,所以当你编程它时,你应该忘记多任务,每一种多任务的尝试都会出现意想不到的行为(减速接近卡住)。 在这种情况下,软件串行通信将根据接收到的数据量降低程序执行速度,并且在硬件串行通信过程中会完全卡住。
要解决这个问题,您应该在代码中使用“一件事一次”的方法。

我希望它有帮助并且没有吓唬。

是的,但是你总是要考虑到ARDUNO是基于McCon,而不是微处理器,所以当你编程它时,你应该忘记多任务,每一种多任务的尝试都会出现在意外的行为中(减速接近卡住)。 在这种情况下,软件串行通信将根据接收到的数据量降低程序执行速度,并且在硬件串行通信过程中会完全卡住。
要解决这个问题,您应该在代码中使用“一件事一次”的方法。

我希望它能起到帮助作用,而不是吓唬人。

软件序列下的Arduino IDE中有一个示例,演示了如何使用它。它说使用数字管脚3和4代替硬件串行管脚0和1。草图不断读取软件序列号,并将读取的任何内容打印到串行监视器


在第二个Arduino上运行这段代码以不断地编写串行软件并不需要太多时间

软件序列下的Arduino IDE中有一个示例演示了如何使用它。它说使用数字管脚3和4代替硬件串行管脚0和1。草图不断读取软件序列号,并将读取的任何内容打印到串行监视器


在第二个Arduino上运行这段代码以不断地编写串行软件并不需要太多时间

是的!只需使用arduino的TX和RX引脚即可。将接收器TX、RX引脚分别连接至发送器的RX、TX。

是!只需使用arduino的TX和RX引脚即可。将接收器TX、RX引脚分别连接到发送器的RX、TX。

当然,只需确保划掉RX和TX:

RX1->TX2


RX2->TX1

当然,只需确保划掉RX和TX:

RX1->TX2


RX2->TX1

您可以使用任何数字管脚作为软件串行,如果我不工作,请使用管脚10和11作为软件串行。

您可以使用任何数字管脚作为软件串行,如果我不工作,请使用管脚10,11用于软件串行。

您可以使用自动打包和解析数据,以便在无头的情况下进行Arduino内部通信。该库可通过Arduino IDE安装,并包含许多示例

以下是该库的功能:

此库:

  • 可通过Arduino IDE的库管理器下载(搜索“SerialTransfer.h”)
  • 使用“软件系列”库
  • 是非阻塞的
  • 使用数据包分隔符
  • 使用一致的开销字节填充
  • 使用CRC-8(带查找表的多项式0x9B)
  • 允许使用动态大小的数据包(数据包的有效负载长度可以是1到255字节)
  • 可以传输字节、整数、浮点甚至结构
示例TX Arduino草图:

#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  myTransfer.txBuff[0] = 'h';
  myTransfer.txBuff[1] = 'i';
  myTransfer.txBuff[2] = '\n';

  myTransfer.sendData(3);
  delay(100);
}
#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  if(myTransfer.available())
  {
    Serial.println("New Data");
    for(byte i = 0; i < myTransfer.bytesRead; i++)
      Serial.write(myTransfer.rxBuff[i]);
    Serial.println();
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");
    Serial.println(myTransfer.status);
  }
}
示例RX Arduino草图:

#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  myTransfer.txBuff[0] = 'h';
  myTransfer.txBuff[1] = 'i';
  myTransfer.txBuff[2] = '\n';

  myTransfer.sendData(3);
  delay(100);
}
#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  if(myTransfer.available())
  {
    Serial.println("New Data");
    for(byte i = 0; i < myTransfer.bytesRead; i++)
      Serial.write(myTransfer.rxBuff[i]);
    Serial.println();
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");
    Serial.println(myTransfer.status);
  }
}
#包括“SerialTransfer.h”
串行传输myTransfer;
无效设置()
{
序列号开始(115200);
序列号1.开始(115200);
myTransfer.begin(Serial1);
}
void循环()
{
if(myTransfer.available())
{
Serial.println(“新数据”);
for(字节i=0;i
您可以使用自动打包和解析数据,以便在无头的情况下进行Arduino内部通信。该库可通过Arduino IDE安装,并包含许多示例

以下是该库的功能:

此库:

  • 可通过Arduino IDE的库管理器下载(搜索“SerialTransfer.h”)
  • 使用“软件系列”库
  • 是非阻塞的
  • 使用数据包分隔符
  • 使用一致的开销字节填充
  • 使用CRC-8(带查找表的多项式0x9B)
  • 允许使用动态大小的数据包(数据包的有效负载长度可以是1到255字节)
  • 可以传输字节、整数、浮点甚至结构
示例TX Arduino草图:

#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  myTransfer.txBuff[0] = 'h';
  myTransfer.txBuff[1] = 'i';
  myTransfer.txBuff[2] = '\n';

  myTransfer.sendData(3);
  delay(100);
}
#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  if(myTransfer.available())
  {
    Serial.println("New Data");
    for(byte i = 0; i < myTransfer.bytesRead; i++)
      Serial.write(myTransfer.rxBuff[i]);
    Serial.println();
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");
    Serial.println(myTransfer.status);
  }
}
示例RX Arduino草图:

#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  myTransfer.txBuff[0] = 'h';
  myTransfer.txBuff[1] = 'i';
  myTransfer.txBuff[2] = '\n';

  myTransfer.sendData(3);
  delay(100);
}
#include "SerialTransfer.h"

SerialTransfer myTransfer;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(115200);
  myTransfer.begin(Serial1);
}

void loop()
{
  if(myTransfer.available())
  {
    Serial.println("New Data");
    for(byte i = 0; i < myTransfer.bytesRead; i++)
      Serial.write(myTransfer.rxBuff[i]);
    Serial.println();
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");
    Serial.println(myTransfer.status);
  }
}
#包括“SerialTransfer.h”
串行传输myTransfer;
无效设置()
{
序列号开始(115200);
序列号1.开始(115200);
myTransfer.begin(Serial1);
}
void循环()
{
if(myTransfer.available())
{
Serial.println(“新数据”);
for(字节i=0;i
是,您可以使用pwm引脚进行通信。建议不要将0,1用于串行通信,因为它们用于使用USB端口将草图上载到