我有两个Arduino Leonardo。 这两个Arduino板可以通过SoftwareSerial库相互通信吗? (不是Serial1,谢谢)
答案 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。