[arduino][Mirf库]菜鸟玩 NRF24L01


#1

蓝牙成本高、wifi不会玩,就先看看NRF24L01吧


Mirf.zip (12.7 KB)

来自贴吧的教程:
http://tieba.baidu.com/p/3092150056

IRQ –悬空 @@@@ MISO – D12,
MOSI – D11 @@@ SCK – D13,
CSN – D7, @@@@ CS – D8,
VCC - 3.3V @@@@ GND - GND

发送代码: 00000——00999 循环

#include <SPI.h>
 #include <Mirf.h>
 #include <nRF24L01.h>
 #include <MirfHardwareSpiDriver.h>

 char tempx[6]="00000";
 int x=0;

 void setup(){
 Serial.begin(9600);
 Mirf.spi = &MirfHardwareSpi;
 Mirf.init();

 Mirf.setRADDR((byte *)"clie1"); // 标记本地名,用于接收
Mirf.payload = 5; //对话的长度,用于约定双方对话的缓冲窗口大小,这个代表5个字节
Mirf.channel = 3; // 信道,测试了一下,不同的信道也能接收但即时性很差,不知是不是存在自动寻道匹配机制

Mirf.config();
 }
 void loop(){
 unsigned long time = millis();

 Mirf.setTADDR((byte *)"serv1"); // 标记对方的地址
//Sends("hello"); //发送了一个5字节的hello


 if(x<10)tempx[4]=x+48;
 else if(x>9 && x<100){
   tempx[4]=x%10+48;
   tempx[3]=x/10+48;
 }else if(x>99 && x<999){
   tempx[4]=x%10+48;
   tempx[3]=(x/10)%10+48;
   tempx[2]=x/100+48;
 }

 Sends(tempx);
 x++;
 if(x==1000){
   x=0;
   for(int col=0;col<5;col++)tempx[col]=48;
 }

 delay(100);
 } 


 void Sends(char *str)
 {
 int lens;
 lens=strlen(str);

 char msg[lens];
 int i;
 for (i=0;i<lens;i++)
 {
 msg= int(str);
 }
 Mirf.send((byte *)&msg);

 while(Mirf.isSending()){}



 }

[indent][/indent]
**

接收代码

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
void setup(){
Serial.begin(9600);
 
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
 
Mirf.setRADDR((byte *)"serv1"); // 本地名
Mirf.payload = 5; // 长度
Mirf.channel = 3; // 信道
 
Mirf.config();
 
}
void loop(){
 
byte data[Mirf.payload];
if(!Mirf.isSending() && Mirf.dataReady()){ //存在数据
 
Mirf.getData(data);
 
 
int i;
String Temp;
for (i = 0; i < Mirf.payload; i++) //把收到的信息拼起来,到一个串里面
{
Temp += char(data*);
}
Serial.print("Get:");
Serial.print(Mirf.payload);
Serial.print(" ");
Serial.println(Temp);
 
/**
Mirf.setTADDR((byte *)"clie1");
Mirf.send(data);
**/
}
}



#2

lz好样的,正准备玩这个呢:lol


#3

:lol我的两个模块有用了,哈哈


#4

我只有一个arduino,两个NRF2402,可以吗?