发射
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
void setup()
{
Serial.begin(9600);
Mirf.cePin = 9; //设置CE引脚为D9
Mirf.csnPin = 10; //设置CE引脚为D10
Mirf.spi = &MirfHardwareSpi;
Mirf.init(); //初始化nRF24L01
//设置接收标识符"Sen01"
Mirf.setRADDR((byte *)"Sen01");
Mirf.payload = sizeof(unsigned int);//在这把2 修改成4
Mirf.channel = 3;
Mirf.config();
//注意一个Arduino写Sender.ino,另一个写Receiver.ino。
//这里标识写入了Sender.ino
Serial.println("I'm Sender...");
}
unsigned int adata = 0,bdata = 0,cdata = 0,ddata = 0;
void loop()
{
//读取A0值到adata
adata = analogRead(A0);
bdata = analogRead(A1);
cdata = analogRead(A2);
ddata = analogRead(A3);
//由于nRF24L01只能以byte单字节数组形式发送Mirf.payload个数据,
//所以必须将所有需要传输的数据拆成byte。
//下面定义byte数组,存放待发数据,因为Mirf.payload = sizeof(unsigned int);
//实际下面等于byte data[2];
byte data[Mirf.payload];
//adata是unsigned int双字节数据,必须拆开。
//将adata高低八位拆分:
data[0] = adata & 0xFF; //低八位给data[0],
data[1] = adata >> 8; //高八位给data[1]。
data[2] = bdata & 0xFF; //低八位给data[0],
data[3] = bdata >> 8;
data[4] = cdata & 0xFF; //低八位给data[0],
data[5] = cdata >> 8;
data[6] = ddata & 0xFF; //低八位给data[0],
data[7] = ddata >> 8;
//设置向"serv1"发送数据
Mirf.setTADDR((byte *)"Rec01");
Mirf.send(data);
//while死循环等待发送完毕,才能进行下一步操作。
while(Mirf.isSending()) {}
Serial.println(adata);
// Serial.print("*****");
Serial.println(bdata);
Serial.println(cdata);
Serial.println(ddata);
delay(3000);
}接收
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
//定义一个变量adata存储最终结果,oldadata存储旧结果,防止相同结果刷屏。
unsigned int adata = 0,bdata = 0,cdata = 0,ddata = 0;
void setup()
{
Serial.begin(9600);
//---------初始化部分,不可随时修改---------
Mirf.cePin = 9; //设置CE引脚为D9
Mirf.csnPin = 10; //设置CE引脚为D10
Mirf.spi = &MirfHardwareSpi;
Mirf.init(); //初始化nRF24L01
//---------配置部分,可以随时修改---------
//设置接收标识符"Rev01"
Mirf.setRADDR((byte *)"Rec01");
//设置一次收发的字节数,这里发一个整数,
//写sizeof(unsigned int),实际等于2字节
Mirf.payload = sizeof(unsigned int);//在这把2 修改成4
//发送通道,可以填0~128,收发必须一致。
Mirf.channel = 3;
Mirf.config();
//注意一个Arduino写Sender.ino,另一个写Receiver.ino。
//这里用来辨别写入了Receiver.ino程序
Serial.println("I'm Receiver...");
}
void loop()
{
//定义一个暂存数组,大小为Mirf.payload。
byte data[Mirf.payload];
if(Mirf.dataReady()) //等待接收数据准备好
{
Mirf.getData(data); //接收数据到data数组
//data[1]<左移8位与data[0]并,重组数据。
adata = (unsigned int)((data[1] << 8) | data[0]);
bdata = (unsigned int)((data[3] << 8) | data[2]);
cdata = (unsigned int)((data[5] << 8) | data[4]);
ddata = (unsigned int)((data[7] << 8) | data[6]);
Serial.println(adata);
// Serial.print("*****");
Serial.println(bdata);
Serial.println(cdata);
Serial.println(ddata);
}
}
|