arduino一般自带 Mirf 库,没有的话自行下载。
我这里简单封装方便使用,就不介绍怎么添加库了。代码比较简单,就不多说了。
h文件
#ifndef M_NRF_H
#define M_NRF_H
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
class m_nrf{
public:
void TX_init();
void RX_init();
void sends(unsigned char* buf);
void recvs(unsigned char* buf);
};
#endif
c文件
#include "m_nrf.h"
void m_nrf::TX_init()
{
/*
* CE 6
* CS 10
* MOSI 11 三路spi是官方驱动固定的,CE和CS可以自己修改
* MISO 12
* SCK 13
*/
Mirf.cePin = 6; //设置CE引脚为D6
Mirf.csnPin = 10; //设置CS引脚为D10
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"ABCDE"); //设置自己的地址(发送端地址),使用5个字符
Mirf.payload = 32; //传输的字节
Mirf.channel = 90; //设置所用信道
Mirf.config();
Mirf.setTADDR((byte *)"HES_A"); //设置接收端地址
}
void m_nrf::RX_init()
{
/*
* CE 8
* CS 7
* MOSI 11 三路spi是官方驱动固定的,CE和CS可以自己修改
* MISO 12
* SCK 13
*/
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"HES_A"); //设置自己的地址(接收端地址),使用5个字符
Mirf.payload = 32;
Mirf.channel = 90; //设置使用的信道
Mirf.config();
}
void m_nrf::sends(unsigned char* buf)
{
Mirf.send(buf); //发送指令,发送随机数value
while (Mirf.isSending()) delay(1); //直到发送成功,退出循环
}
void m_nrf::recvs(unsigned char* buf)
{
if (Mirf.dataReady()) { //当接收到程序,
Mirf.getData(buf);
}
}