使arduino从nRF24(SPI和nRF库)接收数据,同时使用serialcommand读取等待数据请求的串行端口

时间:2019-04-19 01:09:17

标签: arduino

我能够使用nRF24L01芯片将数据从一种arduino传输到另一种。但是,我只需要在串行端口上发送特定命令时才发送数据。我希望能够在串行端口上写“ A”,并让arduino答复最新数据。使用serialcommand库,这很容易,并且在我直接插入的情况下也可以使用。但是,当我添加nRF24L01模块的那一刻,serialcommand.h不再响应数据了。我什至尝试删除了if(radio.available())..这样就不会接收到任何数据,而事实上安装程序中存在radio.begin()会使串行命令“ A”无法正常工作。当我删除收音机内容时,命令“ A”的确会返回三个零(默认数据)。

这是我的接收方代码。我仍然认为自己是一个初学者,而且我从未正式学习过C / C ++。任何帮助或想法,为什么会发生这种情况非常感谢!

.
#include <SoftwareSerial.h>
#include <SerialCommand.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

SerialCommand sCmd;

RF24 radio(7, 8); // CE, CSN

const byte address[6] = "00001";

int Array[3];

void setup() {

Serial.begin(9600);
sCmd.addCommand("A", serialdataPrint );
radio.begin();
radio.setRetries(15, 15);
radio.openReadingPipe(0,address); 
radio.setPALevel(RF24_PA_MIN);
radio.startListening();

}

void loop() {

   while (Serial.available() > 0){
    sCmd.readSerial();

    if (radio.available()) {

    int Array_received[3];

    radio.read(&Array_received, sizeof(Array_received));

    Array[0] = Array_received[0];
    Array[1] = Array_received[1];
    Array[2] = Array_received[2];
    } 
  }
}


void serialdataPrint ()
{
    Serial.println(Array[0]);
    Serial.println(Array[1]);
    Serial.println(Array[2]);
}

0 个答案:

没有答案