Arduino论坛
直播中

kyzo尊

8年用户 10经验值
擅长:可编程逻辑
私信 关注
[问答]

如何用NRF24l01同时发送多组有正负的数字?

如题
我想用NRF24l01模块发送  MPU6050陀螺仪接收到的数据
ax, ay, az, gx, gy, gz;

看教程说只能以byte字节形式发送, 可是字节是无符号的

然后我将数据转成十六进制再发送, 还是不成功。

本人c语言比较菜, 如有菜鸟错误请原谅!!
程序是根据别人的程序改的, 备注部分没有改过来。
望有能人帮我解决解决~

下面是发送端代码
  1. /*

下面是接收端代码:
  1. /*
  2. nRF24L01 Arduino Receiver接收端

  3. 引脚接法:
  4. nRF24L01   Arduino UNO
  5. VCC <-> 3.3V
  6. GND <-> GND
  7. CE  <-> D9
  8. CSN <-> D10
  9. MOSI<-> D11
  10. MISO<-> D12
  11. SCK <-> D13
  12. IRQ <-> 不接
  13. */

  14. #include
  15. #include
  16. #include
  17. #include

  18.     //定义一个变量adata存储最终结果,oldadata存储旧结果,防止相同结果刷屏。
  19.     int adata[]= {0,0,0,0,0,0};
  20.     int olddata[] = {0,0,0,0,0,0};
  21.     int adata0 =0, adata1 = 0, adata2 =0, adata3 = 0, adata4= 0, adata5 =0;

  22. void setup()
  23. {
  24.     Serial.begin(9600);

  25.     //---------初始化部分,不可随时修改---------
  26.     Mirf.cePin = 9;     //设置CE引脚为D9
  27.     Mirf.csnPin = 10;   //设置CE引脚为D10
  28.     Mirf.spi = &MirfHardwareSpi;
  29.     Mirf.init();  //初始化nRF24L01

  30.     //---------配置部分,可以随时修改---------
  31.     //设置接收标识符"Rev01"
  32.     Mirf.setRADDR((byte *)"Rec01");
  33.     //设置一次收发的字节数,这里发一个整数,
  34.     //写sizeof(unsigned int),实际等于2字节
  35.     Mirf.payload = sizeof(char);
  36.     //发送通道,可以填0~128,收发必须一致。
  37.     Mirf.channel = 5;
  38.     Mirf.config();

  39.     //注意一个Arduino写Sender.ino,另一个写Receiver.ino。
  40.     //这里用来辨别写入了Receiver.ino程序
  41.     Serial.println("I'm Receiver...");
  42. }

  43. void loop()
  44. {
  45.     //定义一个暂存数组,大小为Mirf.payload。
  46.     byte data0[Mirf.payload];
  47.     byte data1[Mirf.payload];
  48.     byte data2[Mirf.payload];
  49.     byte data3[Mirf.payload];
  50.     byte data4[Mirf.payload];
  51.     byte data5[Mirf.payload];
  52.     if(Mirf.dataReady())    //等待接收数据准备好
  53.     {
  54.         Mirf.getData(data0);    //接收数据到data数组
  55.         Mirf.getData(data1);
  56.         Mirf.getData(data2);
  57.         Mirf.getData(data3);
  58.         Mirf.getData(data4);
  59.         Mirf.getData(data5);
  60.         
  61.         //data[1]<左移8位与data[0]并,重组数据。
  62.         // adata = (unsigned int)((data[1] << 8) | data[0]);

  63.         //int("adata");
  64.         adata0 = (unsigned int)((data0[1] << 8) | data0[0]);
  65.         adata1 = (unsigned int)((data1[1] << 8) | data1[0]);
  66.         adata2 = (unsigned int)((data2[1] << 8) | data2[0]);
  67.         adata3 = (unsigned int)((data3[1] << 8) | data3[0]);
  68.         adata4 = (unsigned int)((data4[1] << 8) | data4[0]);
  69.         adata5 = (unsigned int)((data5[1] << 8) | data5[0]);

  70.         /*adata[0] = adata0;
  71.         adata[1] = adata1;
  72.         adata[2] = adata2;
  73.         adata[3] = adata3;
  74.         adata[4] = adata4;
  75.         adata[5] = adata5; */

  76.         adata[0] = (adata0,DEC);
  77.         adata[1] = (adata1,DEC);
  78.         adata[2] = (adata2,DEC);
  79.         adata[3] = (adata3,DEC);
  80.         adata[4] = (adata4,DEC);
  81.         adata[5] = (adata5,DEC);
  82.         
  83.       

  84.         //与上一次结果比较,避免相同结果刷屏,降低串口流量
  85.         if(adata != olddata)
  86.         {
  87.             olddata[0] = adata[0]; //本次结果作为历史结果。
  88.             olddata[1] = adata[1];
  89.             olddata[2] = adata[2];
  90.             olddata[3] = adata[3];
  91.             olddata[4] = adata[4];
  92.             olddata[5] = adata[5];
  93.             
  94.             //Serial.print输出数据
  95.             //Serial.print("A0=");
  96.             //Serial.println(adata);
  97.             //也可以输出双字节数据   
  98.     Serial.print(adata[0]); Serial.print("t");
  99.     Serial.print(adata[1]); Serial.print("t");
  100.     Serial.print(adata[2]); Serial.print("t");
  101.     Serial.print(adata[3]); Serial.print("t");
  102.     Serial.print(adata[4]); Serial.print("t");
  103.     Serial.println(adata[5]);
  104.             //Serial.write(data[1]);
  105.             //Serial.write(data[0]);
  106.        }

  107.     }
  108. }


已退回4积分

回帖(1)

Doctor

2018-4-17 14:57:32
最近也在做类似的一个小项目,遇到了同一问题,不知问题处理否
举报

更多回帖

发帖
×
20
完善资料,
赚取积分