我能够使用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]);
}