Arduino通过SoftwareSerial进行Arduino通信

时间:2015-06-12 04:24:24

标签: arduino

我有两个Arduino Leonardo。 这两个Arduino板可以通过SoftwareSerial库相互通信吗? (不是Serial1,谢谢)

10 个答案:

答案 0 :(得分:4)

是的,您可以使用数字引脚来完成它。只需将Tx连接到Rx

即可

答案 1 :(得分:2)

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

答案 2 :(得分:2)

是的,当然。您可以使用所有PWN针脚,3,5,6,10,11,13。

答案 3 :(得分:1)

是的,但你总是要考虑到Arduino是基于 microcrontroler 而不是微处理器所以当你编程它时你应该忘记多任务处理,各种多任务尝试都会来意外行为(减速接近卡住) 在这种情况下,软件串行通信将根据接收的数据量减慢程序执行速度,并且在硬件串行通信期间将完全停止。 为了解决这个问题,你应该使用方法"一件事情"在你的代码中 我希望它有所帮助,并没有吓到。

答案 4 :(得分:1)

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

调整此代码以在第二个Arduino上运行以不断写入Software Serial并不需要太多。

答案 5 :(得分:1)

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

答案 6 :(得分:0)

当然,只需确保将RX和TX划掉即可。

RX1-> TX2

RX2-> TX1

答案 7 :(得分:0)

您可以使用任何数字引脚作为软件序列号,以防万一我不工作,请使用10、11引脚作为软件序列号。

答案 8 :(得分:0)

您可以使用SerialTransfer.h自动打包和解析数据,以实现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);
}

示例RX Arduino素描:

#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);
  }
}

答案 9 :(得分:0)

是的,您可以使用pwm引脚进行通信。建议不要使用0,1进行串行通信,因为它们用于通过USB端口将草图上传到Arduino。