Пример наброска для пинг-понга на паре nRF24L01s работает, но при использовании моего собственного кода происходит сбой после первой успешной передачи.
У меня есть пара nRF24L01, подключенных к двум платам Arduino Uno, и я использую библиотеку RF24 отсюда: RF24 library. При запуске скетча-примера pingpair радиостанции без проблем передают и принимают данные. Поэтому я попытался написать свой собственный очень простой пример, но столкнулся с проблемой: первое сообщение успешно передаётся (и принимается), однако последующие сообщения не отправляются. Вызов radio.write() возвращает false.
Я использую следующий код на «отправителе»:
RF24 radio(9,10);
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
uint8_t payload[1];
void setup() {
Serial.begin(9600);
radio.begin();
radio.setRetries(15, 15);
radio.setPayloadSize(1);
radio.openWritingPipe(pipes[0]);
}
void loop() {
payload[0] = 1;
bool ok = radio.write(payload, 1);
Serial.println("Status: " + (String) ok);
delay(200);
}
И следующее на «приемнике»:
RF24 radio(9,10);
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
uint8_t payload[1];
void setup() {
Serial.begin(9600);
radio.begin();
radio.setRetries(15, 15);
radio.setPayloadSize(1);
radio.openReadingPipe(1, pipes[0]);
radio.startListening();
Serial.println("Listening: " );
}
void loop() {
if (radio.available()) {
bool done = false;
while (!done) {
done = radio.read(payload, 1);
Serial.println("Got payload: " + (String) payload[0]);
}
}
}
Предполагаю, что проблема в моём коде, поскольку примеры набросков работают, но я не могу понять, в чём проблема. Ещё раз подведу итог: при сбросе Arduino первый вызов radio.write() возвращает true, и сообщение передаётся. После этого последующие вызовы radio.write() возвращают false.
Также обратите внимание, что я пробовал добавить конденсатор емкостью 10 мкФ между +3,3 В и землей, но это не помогло.
Спасибо за любую помощь.
@user45183, 👍0
0
- Как использовать передатчик и приемник для условной отправки строковых сообщений получателю?
- вопрос по трубке nRF24L01
- Данные DHT11 из Arduino UNO в Firebase через ESP8266
- Объяснение кода MPU6050
- Использование функции уровня сигнала модуля nRF24L01
- Как автоматически сбросить nrf24l01+ с кодом?
- Как я могу прервать задержку() при нажатии кнопки?
- Не получаем данные от NRF24L01