蓝牙成本高、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);
**/
}
}