Я уже куда не давал питание на эти модули через ESC. И через саму ардуинку, и через стабилизатор, ничего не хочет. Мусор и мусор
а я говорил просматривается почерк! я своего брата определяю на раз в коде!)))
это вы зря, надо знать куда давать, а то и сгореть могли…
вы все таки нарисуйте схемку, ладня я все доделал, пошел спать)))
Да не сгорели, я каждый раз перед началом ставлю код на сканирование эфира, а второй чтобы передавал что то и потом меняю их. Пока живы, в прошлый раз у меня недокручена антена была и плата совершила под моим указом японское искусство начинающееся на Х
попробуйте в тестах поменять расстояние между можулями, их ориентацию.
CRC вам отсеивает битые пакеты, и это как раз функция CRC. Если с включеной CRC пропадают все пакеты, значмт все пакеты - битые.
Попробйте отсылать не строчу PING а 0, unsigned int 0xffffffff.
4 байта, то-есть. Посмотрите, что придет. У вас не просто битый пакет, он как-то уникально побился, с удвоением символов.
Поменяйте передающее устройство с приемным
ТС, всю тему я не читал, но мой тебе совет, отнеси все свои NRF в помойное ведро, орошая слезами, ничего путного ты с них не получишь.
Спасибо за ответ, но к сожалению не помогло. Пробовал менять расстояние, местами, но увы и ах.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8);
const byte address[6] = "00001";
unsigned int receivedData;
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN, 0);
radio.setDataRate(RF24_1MBPS);
// Размер пакета (2 байта)
radio.setPayloadSize(sizeof(receivedData));
// ОТКЛЮЧАЕМ ВСЁ
radio.setAutoAck(false);
radio.disableCRC();
radio.startListening();
}
void loop() {
if (radio.available()) {
radio.read(&receivedData, sizeof(receivedData));
// Выводим в 16-ричном формате
Serial.println(receivedData, HEX);
}
}
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8);
const byte address[6] = "00001";
unsigned int payload = 0xFFFF; // Это 2 байта (сплошные единицы)
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN, 0);
radio.setDataRate(RF24_1MBPS);
// Жестко задаем размер пакета (2 байта)
radio.setPayloadSize(sizeof(payload));
// ОТКЛЮЧАЕМ ВСЁ
radio.setAutoAck(false);
radio.disableCRC();
radio.stopListening();
}
void loop() {
radio.write(&payload, sizeof(payload));
delay(100);
}
Пробовал еще отправлять uint32_t payload = 0xFFFFFFFF;
Но результат один:
с вариантом unsigned int payload = 0xFFFF так получает:
FFFF
FFFF
FFFF
FFFF
7FE0
1FF8
7FE
FF9F
1FF8
FFFF
FFFF
FFFF
1FF8
FFFF
FEFF
FFFF
FF07
FFFF
FCFF
FFFF
FF07
E0FF
FFFF
FFFF
C0FF
FFFF
1FFC
1FF8
и со вторым вариантом тоже мусор приходит. Но я заметил, что первые пару пакетов идеально дошли. Подумал, может дело в питании, подключил через ESC с BEC, то есть пустил 5V/3A и также мусор.
С CRC вообще не приходит почему то, даже раз в минуту(((
Заработало, слава Богу, огромное спасибо. Но кроме того, у меня был задан адрес трубы как const byte address[6] = “00001”; Но я поменял на const byte address[6] = “RxTx1”; и поставил побольше скорость и все идеально работает.
Вот код
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8);
const byte address[6] = "RxTx1";
unsigned int receivedData;
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN, 0);
radio.setDataRate(RF24_2MBPS);
radio.setPayloadSize(sizeof(receivedData));
// ВКЛЮЧАЕМ ПРОВЕРКУ ОШИБОК
radio.setCRCLength(RF24_CRC_16);
radio.setAutoAck(false);
radio.startListening();
Serial.println("RX: 2MBPS, CRC ВКЛЮЧЕН");
}
void loop() {
if (radio.available()) {
radio.read(&receivedData, sizeof(receivedData));
Serial.println(receivedData, HEX);
}
}
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8);
const byte address[6] = "RxTx1";
unsigned int payload = 0xFFFF;
void setup() {
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN, 0);
// Ставим максимальную скорость. 250k этот чип не переваривает.
radio.setDataRate(RF24_2MBPS);
radio.setPayloadSize(sizeof(payload));
// ВКЛЮЧАЕМ ПРОВЕРКУ ОШИБОК
radio.setCRCLength(RF24_CRC_16);
radio.setAutoAck(false);
radio.stopListening();
Serial.println("TX: 2MBPS, CRC ВКЛЮЧЕН");
}
void loop() {
radio.write(&payload, sizeof(payload));
delay(100);
}
Ну тогда отметьте пост Бабосика, как решающий проблему :). У Бабосика завелся новый друг-программист, они вдвоем последнее время решили кучу вопросов на форуме.
я бы даже сказал - “железный друг”. Они уже давно вместе.
“- Исключено! Савранский не бросит железного друга!”