关于arduino和nrf24l01的问题!!!
本帖最后由 hui92984 于 2013-9-25 15:28 编辑闲来无事研究下NRF24L01的通讯,
以下是arduino的代码,但是使用中有个问题,就是发送端的字符串不管有多长,接收端只能显示最后一位字符,不知道什么问题!
发送端代码
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"
void setup(){
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;//加载24L01SPI
Mirf.init(); //开始
Mirf.setTADDR((byte *)"serv1");//发送到"接收地址"
Mirf.payload = sizeof(char);
Mirf.config();
}
void loop()
{
char words='asd';
Mirf.send((byte *)&words);
delay(100);
}
接收端代码
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"
char data;
void setup(){
Mirf.spi = &MirfHardwareSpi; //加载24L01SPI
Mirf.init();
Mirf.setRADDR((byte *)"serv1"); //接收地址" "
Mirf.payload = sizeof(char); //数据类型(整数)
Mirf.config();
Serial.begin(9600);
}
void loop(){
if(Mirf.dataReady())
{ //如果接收到数据则执行
Mirf.getData((byte *)&data); //接收数据
Mirf.rxFifoEmpty(); //清理24L01援存
delay(90);
Serial.println(data);
}
}
是你的载荷宽度Mirf.payload设置的问题。Nrf24L01每次发送的数据长度是由Mirf.payload决定的。你把 Mirf.payload = sizeof(char);改成Mirf.payload = 3;就可以一次发送和接受三个字符了。 本帖最后由 mxhhaixin 于 2013-9-25 16:49 编辑
还有程序中这句char words='asd'; 也有问题。'asd'不是合法的字符常量。接收端程序中data变量也要做改动。要想一次接收多个字符,就不能用char data;改成char data; mxhhaixin 发表于 2013-9-25 16:40 static/image/common/back.gif
还有程序中这句char words='asd'; 也有问题。'asd'不是合法的字符常量。接收端程序中data变量也要做改动。要 ...
要用数组是吗 使用char类型的数组,如 char words[]="asd";。 mxhhaixin 发表于 2013-9-25 16:40 static/image/common/back.gif
还有程序中这句char words='asd'; 也有问题。'asd'不是合法的字符常量。接收端程序中data变量也要做改动。要 ...
请问无线数传最多支持多少个字节的字符串传输,换句话的意思字符串数组的维度最大是多大?有限制吗? 32个字节。如果要传输长字符串的话,可以把Mirf.payload设为1,每次发送一个字符,在接收端再组合成字符串。 mxhhaixin 发表于 2013-9-27 08:16 static/image/common/back.gif
32个字节。如果要传输长字符串的话,可以把Mirf.payload设为1,每次发送一个字符,在接收端再组合成字符串。 ...
谢谢哥们的回答,方便留下你的QQ吗! 如果使用 char words[]="asd" 接收端只能接收到第一个字符‘a“ 这又是咋回事!!! :(:(:(为什么我的不行的,也是同样的程序
页:
[1]