【发布时间】:2018-01-20 08:36:47
【问题描述】:
当我试图找出我的问题时,我一直在阅读很多关于 nrf24l01 和 Arduinos 的问题和答案。我相当肯定没有人有这个问题,但我可能是错的。这是我的问题:
如果我将发送代码上传到 UNO 并将接收代码上传到 NANO,我会不断收到错误消息。并且没有任何东西被传输。但是,如果我做相反的事情并将发送代码上传到 NANO 并将接收代码上传到 UNO,一切都很好......我一直在抓挠我的头几天没有任何想法,我想从其他人那里得到意见,因为我没有想法......
我尝试了不同的 nrf24l01 模块(我得到了大约 20 个)来查看是否有一个被炸了。还是一样的。尝试更改为不同的引脚...仍然是同一件事。更改了代码以使其更简单,更简单地缩小范围......仍然是同样的事情。也许扫描比发送包裹需要更多的功率,而 Nano 的 3.3v 还不够?我非常怀疑..
我真的很好奇你们能不能解决这个问题。我想我提供了很多信息。如果您需要更多,请随时询问。
这是我的设置:
Arduino Nano:
这是来自printDetails()函数的日志:
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xb01dfacece 0xb01dfacece
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xb01dfacece
RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x02
RF_CH = 0x73
RF_SETUP = 0x07
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX
Arduino Uno:
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xb01dfacece 0xb01dfacece
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xb01dfacece
RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x02
RF_CH = 0x73
RF_SETUP = 0x07
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX
这是接收方代码:
#include <SPI.h>
#include "RF24.h"
#include "nRF24L01.h"
#include "printf.h"
RF24 myRadio (7,8);
const uint64_t pipe = 0xB01DFACECEL;
struct package
{
int id=0;
int code = 0;
char text[100] = "";
};
typedef struct package Package;
Package data;
void setup() {
Serial.begin(115200);
printf_begin();
delay(1000);
myRadio.begin();
myRadio.setChannel(115);
myRadio.openReadingPipe(1,pipe);
myRadio.printDetails();
myRadio.startListening();
Serial.println("Set-Up Done");
delay(1000);
}
void loop() {
if(myRadio.available())
{
while(myRadio.available())
{
myRadio.read(&data, sizeof(data));
Serial.print("\nPackage");
Serial.println(data.id);
Serial.println(data.code);
Serial.println(data.text);
}
}
delay(500);
}
这里是发送代码:
#include <SPI.h>
#include "RF24.h"
#include "nRF24L01.h"
#include "printf.h"
RF24 myRadio (7,8);
const uint64_t pipe = 0xB01DFACECEL;
struct package
{
int id=1;
int code = 2;
char text[100] = "text";
};
typedef struct package Package;
Package data;
void setup() {
Serial.begin(9600);
printf_begin();
delay(1000);
myRadio.begin();
myRadio.setChannel(115);
myRadio.openWritingPipe(pipe);
myRadio.setRetries(15,15);
myRadio.printDetails();
myRadio.stopListening();
Serial.println("Set-Up Done");
delay(1000);
}
void loop() {
if(!myRadio.write(&data, sizeof(data)))
{
Serial.println("error!!");
myRadio.printDetails();
}
Serial.print("\nPackage");
Serial.println(data.id);
Serial.println(data.code);
Serial.println(data.text);
data.id += 1;
data.code += 1;
delay(3000);
}
【问题讨论】:
-
顺便说一下,我使用 stackoverflow 已经有一段时间了,但主要是作为参考,这是我的第一个问题,所以如果我做错了什么,请随时提供建议:D
-
嘿@Berchy 你的帖子没问题 IMO,也许代码有点太多(有时只包括所需的相关部分是首选)。我仍然认为这个问题更适合Arduino SE,以防您寻求的解决方案与代码无关。
标签: arduino arduino-uno