本帖最后由 pzg123 于 2015-7-28 20:56 编辑
收到数据再返回数据
/***NRF24l01针脚连接线:MISO->12; MOSI->11; SCK->13; CE->9; CSN->10***/
#include <SPI.h> //引用SPI库文件
#include <Mirf.h> //引用Mirf库文件
#include <nRF24L01.h> //引用NRF24L01库文件
#include <MirfHardwareSpiDriver.h> //引用Mirf驱动库文件
char nrfData[16]={0};
void setup(){
Serial.begin(115200); //设置串口波特率115200
//初始化Mirf,用于NRF24L01收发
char client[10]={0}; //客户端名称
sprintf(client,"clie%d",1); //设置客户端名称=clie1
Mirf_Init(0,client,1); //初始化NRF24L01 设置接收地址=clie1 频道=1
}
void loop(){
////NRF24l01接收数据
byte data[Mirf.payload];//声明字节
if (Mirf.dataReady()){
Mirf.getData((byte *) &nrfData);
Serial.print("rxdata=");
Serial.println(nrfData);
delay(50);//延时
////NRF24l01发送数据
char server[10]={0};//声明接收名称
sprintf(server,"serv%d",1);//赋值接收名称
Mirf_Init(2,server,1);//设置发送模式
Mirf.send((byte *) &nrfData); //发送给NRF24L01
while(Mirf.isSending()){}//等待发送完闭
Serial.print("txdata=");
Serial.print(nrfData);
Serial.println(", ok");
char client[10]={0}; //本设备名称
sprintf(client,"clie%d",1); //设置本设备名称=clie1
Mirf_Init(1,client,1); //设置接收模式,地址=clie1 频道=1
}
Mirf.rxFifoEmpty();
}
////初始化Mirf 0初始化1为接收2为发送
void Mirf_Init(int mode,char *address,int channel){
////初始化Mirf,用于NRF24l01收发
if(mode==0){
Mirf.spi = &MirfHardwareSpi;//设置spi
Mirf.init();//初始Mirf
Mirf.setRADDR((byte *)address);//设置接收地址
}
////设置接收模式
if(mode==1) Mirf.setRADDR((byte *)address);//设置接收地址
////设置发送模式
if(mode==2) Mirf.setTADDR((byte *)address);//设置发送地址
Mirf.payload = sizeof(rxData);//收发字节
Mirf.channel = channel;//设置频道
Mirf.config();//生效配置
} |