|
本帖最后由 yxwzyyk 于 2013-10-14 20:48 编辑
最近在琢磨nRF24L01,看了几个帖子发现都不太好用太麻烦,所以参照了下nRF24L01手册自己写了一个库, 发出来给大家看看{:soso_e120:}.
默认开启增强型SchockBurstTM模式也就是开启自动回复机制.
默认开启自动重发.
默认开启中断.
默认传输速率2Mbps发射功率0dBm.
接线方法在头文件中定义的有,使用软SPI所以不依赖硬件可以自己更改
VCC 3.3v
GND GND
CE 8
CSN 9
SCK 10
MOSI 11
MISO 12
IRQ也就是中断接口2,也就是0号中断.
首先是发送端 - #include "NRF24L01.h"
- #define TX_NAME "32899"
- /* 声明nRF24L01 */
- nRF24L01 nrf24;
- /* 建立发送数据缓存,初始化为0 */
- char buf[26] = {0};
- void setup() {
- Serial.begin(9600);
- /* 初始化 nrf24 */
- nrf24.init();
- /* 配置数据宽度,也就是一次收发的字节数,默认是32字节,这里设为1是为了测试 */
- nrf24.payload = 1;
- /* 配置地址 */
- nrf24.setTADDR(TX_NAME);
- /* 写入配置 */
- nrf24.config();
- /* 初始化发送数据 */
- for(int i = 0; i < 26; i++){
- buf[i] = 97+i;
- }
- }
- void loop() {
- for(int i = 0; i < 26; i++){
- Serial.println("sending...");
- nrf24.send(&buf[i]);
- if(nrf24.verifySend() == true){
- Serial.println("Send completed!");
- } else {
- Serial.println("Failed to send!");
- }
- delay(3000);
- }
- }
复制代码
接收端 - #include "NRF24L01.h"
- #define RX_NAME "32899"
- /* 声明nRF24L01 */
- nRF24L01 nrf24;
- /* 建立接收数据缓存,初始化为0 */
- char buf;
- void setup() {
- Serial.begin(9600);
- nrf24.init();
- nrf24.payload = 1;
- nrf24.setRADDR(RX_NAME);
- nrf24.config();
- /* 设定中断 */
- attachInterrupt(0, readData, LOW) ;
- }
- void loop() {
- Serial.println("Wait...");
- delay(1000);
- }
- void readData (void) {
- Serial.println("Interrupt!");
- if(nrf24.dataReady()){
- Serial.println("Receiving the data!");
- nrf24.getData(&buf);
- Serial.print("Data -> ");
- Serial.print(buf);
- Serial.println(" ");
- } else {
- Serial.println("NULL!");
- }
- }
复制代码
[url=]NRF24L01.zip[/url]
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|