Справка по отладке NRF24L01
Я пытался заставить NRF24L01 передавать "привет, мир", хотя устройства разговаривают друг с другом, они считывают зашифрованные данные. Я повсюду искал поддержки, но, к сожалению, пробовал решения, сколько мог. Я приложил приведенный ниже код и выходные данные.
Шаги для исправления с моей стороны:
- Проверил проводку
- перепроверил код и адрес
- Использовался конденсатор
- Изменена скорость передачи в бодах в соответствии со спецификацией приемопередатчика и случайными скоростями передачи в бодах
Мне нужна новая перспектива, пожалуйста, помогите!!
Передатчик:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 myradio(7, 8); // CE, CSN
const byte address[6] = "00001";
void setup() {
myradio.begin();
myradio.openWritingPipe(address);
myradio.setPALevel(RF24_PA_MIN);
myradio.stopListening();
}
void loop() {
const char text[] = "Hello World";
myradio.write(&text, sizeof(text));
}
Приемник:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 myradio(7, 8); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
myradio.begin();
myradio.openReadingPipe(0,address);
myradio.setPALevel(RF24_PA_MIN);
myradio.startListening();
}
void loop() {
if (myradio.available()) {
char text[32] = " ";
myradio.read(&text, sizeof(text));
Serial.println(text);
}
}
Я хотел бы добавить, что у меня есть некоторые базовые знания об Arduino.
Выходной сигнал: ?????????????????????????????????/
????????????????????
??????????????????????????????????
???????????????????????
@Ethanmax97, 👍0
Обсуждение1 ответ
Ваша проблема заключается в использовании &text
. текст
- это указатель на блок памяти с текстом в нем. Таким образом, &text
- это указатель на переменную, в которой хранится указатель на блок памяти, в котором хранится текст.
То есть, например:
- "Привет, мир" хранится, начиная с адреса 10.
текст
- это переменная, хранящаяся по адресам 20 и 21 (это два байта для хранения адреса Hello world).- Использование
текста
дает вам10
, но использование&text
дает вам20
.
Поскольку текст
уже является указателем, вам просто нужно привести его к нужному типу указателя для целевой функции (возможно, uint8_t *).
Вы уверены ? (a) см. https://stackoverflow.com/questions/8412694/address-of-an-array и (b) справочный скетч nrf24L01: https://forum.arduino.cc/t/simple-nrf24l01-2- 4ghz-трансивер-демонстрация/405123/2, @6v6gt
- вопрос по трубке nRF24L01
- Использование функции уровня сигнала модуля nRF24L01
- Как автоматически сбросить nrf24l01+ с кодом?
- Не получаем данные от NRF24L01
- Как отправить данные датчика с Arduino через NRF24L01 на Raspberry Pi
- Модуль nRF24L01 с использованием библиотеки Mirf работал, а затем остановился
- Модуль Bluetooth против беспроводного модуля Arduino
- nRF24L01 + потеря пакетов, вызванная считыванием Arduino и связью с датчиками
произошло что-то странное, я заставил это работать, теперь, когда я использовал регулятор 3,3 В и подключил VCC к источнику питания 5 В Arduino, он заработал. Я попробовал еще раз, через 3 часа он снова перестал работать, но соединения были те же. Я попробовал другую проводку, но ничего не вышло. Что может быть причиной этой проблемы сейчас?, @user85289