Arduino论坛
登录
直播中
kyzo尊
8年用户
10经验值
擅长:可编程逻辑
私信
关注
[问答]
如何用NRF24l01同时发送多组有正负的数字?
开启该帖子的消息推送
十六进制
陀螺仪
如题
我想用NRF24l01模块发送 MPU6050陀螺仪接收到的数据
ax, ay, az, gx, gy, gz;
看教程说只能以byte字节形式发送, 可是字节是无符号的
然后我将数据转成十六进制再发送, 还是不成功。
本人c语言比较菜, 如有菜鸟错误请原谅!!
程序是根据别人的程序改的, 备注部分没有改过来。
望有能人帮我解决解决~
下面是发送端代码
/*
下面是接收端代码:
/*
nRF24L01 Arduino Receiver接收端
引脚接法:
nRF24L01 Arduino UNO
VCC <-> 3.3V
GND <-> GND
CE <-> D9
CSN <-> D10
MOSI<-> D11
MISO<-> D12
SCK <-> D13
IRQ <-> 不接
*/
#include
#include
#include
#include
//定义一个变量adata存储最终结果,oldadata存储旧结果,防止相同结果刷屏。
int adata[]= {0,0,0,0,0,0};
int olddata[] = {0,0,0,0,0,0};
int adata0 =0, adata1 = 0, adata2 =0, adata3 = 0, adata4= 0, adata5 =0;
void setup()
{
Serial.begin(9600);
//---------初始化部分,不可随时修改---------
Mirf.cePin = 9; //设置CE引脚为D9
Mirf.csnPin = 10; //设置CE引脚为D10
Mirf.spi = &MirfHardwareSpi;
Mirf.init(); //初始化nRF24L01
//---------配置部分,可以随时修改---------
//设置接收标识符"Rev01"
Mirf.setRADDR((byte *)"Rec01");
//设置一次收发的字节数,这里发一个整数,
//写sizeof(unsigned int),实际等于2字节
Mirf.payload = sizeof(char);
//发送通道,可以填0~128,收发必须一致。
Mirf.channel = 5;
Mirf.config();
//注意一个Arduino写Sender.ino,另一个写Receiver.ino。
//这里用来辨别写入了Receiver.ino程序
Serial.println("I'm Receiver...");
}
void loop()
{
//定义一个暂存数组,大小为Mirf.payload。
byte data0[Mirf.payload];
byte data1[Mirf.payload];
byte data2[Mirf.payload];
byte data3[Mirf.payload];
byte data4[Mirf.payload];
byte data5[Mirf.payload];
if(Mirf.dataReady()) //等待接收数据准备好
{
Mirf.getData(data0); //接收数据到data数组
Mirf.getData(data1);
Mirf.getData(data2);
Mirf.getData(data3);
Mirf.getData(data4);
Mirf.getData(data5);
//data[1]<左移8位与data[0]并,重组数据。
// adata = (unsigned int)((data[1] << 8) | data[0]);
//int("adata");
adata0 = (unsigned int)((data0[1] << 8) | data0[0]);
adata1 = (unsigned int)((data1[1] << 8) | data1[0]);
adata2 = (unsigned int)((data2[1] << 8) | data2[0]);
adata3 = (unsigned int)((data3[1] << 8) | data3[0]);
adata4 = (unsigned int)((data4[1] << 8) | data4[0]);
adata5 = (unsigned int)((data5[1] << 8) | data5[0]);
/*adata[0] = adata0;
adata[1] = adata1;
adata[2] = adata2;
adata[3] = adata3;
adata[4] = adata4;
adata[5] = adata5; */
adata[0] = (adata0,DEC);
adata[1] = (adata1,DEC);
adata[2] = (adata2,DEC);
adata[3] = (adata3,DEC);
adata[4] = (adata4,DEC);
adata[5] = (adata5,DEC);
//与上一次结果比较,避免相同结果刷屏,降低串口流量
if(adata != olddata)
{
olddata[0] = adata[0]; //本次结果作为历史结果。
olddata[1] = adata[1];
olddata[2] = adata[2];
olddata[3] = adata[3];
olddata[4] = adata[4];
olddata[5] = adata[5];
//Serial.print输出数据
//Serial.print("A0=");
//Serial.println(adata);
//也可以输出双字节数据
Serial.print(adata[0]); Serial.print("t");
Serial.print(adata[1]); Serial.print("t");
Serial.print(adata[2]); Serial.print("t");
Serial.print(adata[3]); Serial.print("t");
Serial.print(adata[4]); Serial.print("t");
Serial.println(adata[5]);
//Serial.write(data[1]);
//Serial.write(data[0]);
}
}
}
已退回
4
积分
回帖
(1)
Doctor
2018-4-17 14:57:32
最近也在做类似的一个小项目,遇到了同一问题,不知问题处理否
最近也在做类似的一个小项目,遇到了同一问题,不知问题处理否
举报
更多回帖
rotate(-90deg);
回复
相关问答
十六进制
陀螺仪
无线
数字
传输芯片
nRF24L01
的WIFI模块该怎样去设计呢
2021-12-17
1356
NRF24L01
模块程序的接收与
发送
有
何区别呢
2021-12-16
803
NRF24L01
的相关命令宏定义
有
哪些
2021-12-17
652
2.4G
NRF24L01
模块的引脚
有
哪些呢
2021-12-17
1062
请问
NRF24L01
的6发1收具体指的是什么意思?
2020-07-20
815
NRF24L01
驱动函数包括哪些
2021-12-16
875
NRF24L01
会有固定的输出状态吗?
2020-06-05
1102
如
何用
nrf24l01
发送
图片?
2020-06-05
877
如
何用
nrf24l01
制作无线语音收发系统?
2020-05-29
1609
NRF24L01
无线模块资料哪里
有
2020-05-29
1000
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分