EasyTransfer Arduino库

在这里插入图片描述
EasyTransfer Arduino库
由Bill发表在Arduino库中2011年5月30日EasyTransfer Arduino库
该库的目的是使日常Arduino用户可以轻松地在具有多个Arduino彼此通信并共享数据的项目上工作。我有很多人问我在PS2X库示例中使用的代码,该示例将PS2控制器值无线发送到SAGAR机器人。回答问题一定很累,我有个主意是写一个库来帮助没有经验的微控制器通讯。这是一种易于使用且简洁的方法,可在两个Arduino之间发送数据。

在我自己的大多数项目中,我定义并编写了自己的NMEA标准通信协议。这使通信易于人读且易于调试,但事实证明浪费带宽和处理能力,因此并非适用于所有应用程序。二进制通信效率更高且用途广泛,但需要仔细处理。该库从用户那里抽象了分组串行通信的优点,因此易于使用和理解。

要使用该库,只需定义要在数据结构内共享的所有数据类型。这样会将所有数据存储在一起。

struct SEND_DATA_STRUCTURE {
//在这里为您要发送的数据输入变量定义
//必须与其他ARDUINO上的对象完全相同
int blinks;
int pause;
};
当请求时,该库会将结构中的所有二进制数据通过带有校验和的串行发送到另一个Arduino,以避免传输错误。

void loop(){
//这就是您访问变量的方式。[组名]。[变量名]
mydata.blinks = random(5);
mydata.pause = random(5);
//发送数据
ET.sendData();
delay(10000);
}
接收方的Arduino将验证校验和,并将新数据复制到其内存中的相同结构中。

void loop(){
//check and see if a data packet has come in.
if(ET.receiveData()){
//this is how you access the variables. [name of the group].[variable name]
//since we have data, we will blink it out.
for(int i = mydata.blinks; i>0; i–){
digitalWrite(13, HIGH);
delay(mydata.pause * 100);
digitalWrite(13, LOW);
delay(mydata.pause * 100);
}
}

delay(2500);
}
重要的是要确保两个Arduino上的结构都相同,才能正常工作。现在,在Arduino之间共享数据变得很容易,而无需定义和编程自己的通信协议,也不必担心同步或传输错误。EasyTransfer将为您做到这一点。

只要整个结构小于255个字节,使用结构保存数据就可以通过允许共享任何类型和数量的数据点来进行通用通信。您可以在结构内部定义int,数组,long等,然后共享数据。通过在两端定义两组结构并使用该库创建两个对象,也可以创建双向通信。稍后我将举一个例子。

您可以在下面下载库和示例。该示例要求两个Arduino板通过其Uarts相互连接。一个将创建两个随机数,并将数据发送给另一个,该随机数将根据这些数字闪烁出一系列闪烁。第一个也会闪烁相同的顺序。

现在,更容易选择要使用的串行端口。Serial,Serial1等,并支持NewSoftSerial库,以便在任何引脚上创建软件串行端口。EasyTransfer用于硬件串行,SoftEasyTransfer用于软件;每个都有自己的示例集。还有一个使用库进行双向通信的示例。

源代码可在GitHub项目页面上找到。

更新
感谢Kumy,现在有了EasyTransfer的I2C版本。还有一个实验性的VirtualWire版本,可用于那些廉价的低频无线电。全部都在上面的单个下载zip文件中。

要安装库,请打开zip文件,然后将EasyTransfer文件夹传输到Arduino“库”文件夹中。然后按照示例将代码添加到您的项目中。如果您有任何问题或疑问,请在支持论坛中告诉我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值