Error dynamic payload with NRF24L01 and tmrh20 librairy
hello,
i trying send string between 2 arduino using nrf24l01 , tmrh20 library. use code dynamic_payload_example , simplify still not working. know wiring correct work static payload.
so code send data :
#include <spi.h>
#include "nrf24l01.h"
#include "rf24.h"
/* hardware configuration: set nrf24l01 radio on spi bus plus pins 7 & 8 */
rf24 radio(8,9);
// sets role of unit in hardware. connect gnd 'pong' receiver
// leave open 'ping' transmitter
//
// topology
//
// radio pipe addresses 2 nodes communicate.
const uint64_t pipes[2] = { 0xf0f0f0f0e1ll, 0xf0f0f0f0d2ll };
const int min_payload_size = 4;
void setup(void)
{
serial.begin(115200);
serial.println(f("rf24/examples/pingpair_dyn/"));
//
// setup , configure rf radio
//
radio.begin();
// enable dynamic payloads
radio.enabledynamicpayloads();
// optionally, increase delay between retries & # of retries
radio.openwritingpipe(pipes[0]);
radio.printdetails();
}
void loop(void)
{serial.print(f("now sending length "));
static char send_payload[] = "abcdefghijklmnopqrstuvwxyz789012";
radio.write( send_payload, min_payload_size );
delay(1000);
}
and receiver :
// on nodemcu ce ies connecte d2 mean gpio4 arduino csn on d8 15 arduino
#include <spi.h>
#include "nrf24l01.h"
#include "rf24.h"
// radio pipe addresses 2 nodes communicate.
const uint64_t pipes[2] = { 0xf0f0f0f0e1ll, 0xf0f0f0f0d2ll };
rf24 radio(4,15);
const int min_payload_size = 4;
char receive_payload[min_payload_size];
void setup() {
// put setup code here, run once:
serial.begin(115200);
radio.begin();
// enable dynamic payloads
radio.enabledynamicpayloads();
radio.openreadingpipe(1,pipes[0]);
radio.startlistening();
radio.printdetails();
}
void loop() {
// put main code here, run repeatedly:
while ( radio.available() )
{
// fetch payload, , see if last one.
uint8_t len = radio.getdynamicpayloadsize();
/*
// if corrupt dynamic payload received, flushed
if(!len){
continue;
}
*/
radio.read( receive_payload, len );
// put 0 @ end easy printing
receive_payload[len] = 0;
// spew it
serial.print(f("got response size="));
serial.print(len);
serial.print(f(" value="));
serial.println(receive_payload);
// first, stop listening can talk
radio.stoplistening();
// send final 1 back.
radio.startlistening();
}
}
but receiver doesn't receive print radio details. idea ?
i trying send string between 2 arduino using nrf24l01 , tmrh20 library. use code dynamic_payload_example , simplify still not working. know wiring correct work static payload.
so code send data :
#include <spi.h>
#include "nrf24l01.h"
#include "rf24.h"
/* hardware configuration: set nrf24l01 radio on spi bus plus pins 7 & 8 */
rf24 radio(8,9);
// sets role of unit in hardware. connect gnd 'pong' receiver
// leave open 'ping' transmitter
//
// topology
//
// radio pipe addresses 2 nodes communicate.
const uint64_t pipes[2] = { 0xf0f0f0f0e1ll, 0xf0f0f0f0d2ll };
const int min_payload_size = 4;
void setup(void)
{
serial.begin(115200);
serial.println(f("rf24/examples/pingpair_dyn/"));
//
// setup , configure rf radio
//
radio.begin();
// enable dynamic payloads
radio.enabledynamicpayloads();
// optionally, increase delay between retries & # of retries
radio.openwritingpipe(pipes[0]);
radio.printdetails();
}
void loop(void)
{serial.print(f("now sending length "));
static char send_payload[] = "abcdefghijklmnopqrstuvwxyz789012";
radio.write( send_payload, min_payload_size );
delay(1000);
}
and receiver :
// on nodemcu ce ies connecte d2 mean gpio4 arduino csn on d8 15 arduino
#include <spi.h>
#include "nrf24l01.h"
#include "rf24.h"
// radio pipe addresses 2 nodes communicate.
const uint64_t pipes[2] = { 0xf0f0f0f0e1ll, 0xf0f0f0f0d2ll };
rf24 radio(4,15);
const int min_payload_size = 4;
char receive_payload[min_payload_size];
void setup() {
// put setup code here, run once:
serial.begin(115200);
radio.begin();
// enable dynamic payloads
radio.enabledynamicpayloads();
radio.openreadingpipe(1,pipes[0]);
radio.startlistening();
radio.printdetails();
}
void loop() {
// put main code here, run repeatedly:
while ( radio.available() )
{
// fetch payload, , see if last one.
uint8_t len = radio.getdynamicpayloadsize();
/*
// if corrupt dynamic payload received, flushed
if(!len){
continue;
}
*/
radio.read( receive_payload, len );
// put 0 @ end easy printing
receive_payload[len] = 0;
// spew it
serial.print(f("got response size="));
serial.print(len);
serial.print(f(" value="));
serial.println(receive_payload);
// first, stop listening can talk
radio.stoplistening();
// send final 1 back.
radio.startlistening();
}
}
but receiver doesn't receive print radio details. idea ?
have @ simple nrf24l01+ tutorial. have deliberately made examples simpler tmrh20 examples.
the second example uses ackpayload feature , automatically uses dynamic payloads
and please modify post , use code button </>
...r
the second example uses ackpayload feature , automatically uses dynamic payloads
and please modify post , use code button </>
code: [select]
so code looks this
, easy copy text editor. see how use forum code long me study without copying text editor....r
Arduino Forum > Using Arduino > Networking, Protocols, and Devices (Moderator: fabioc84) > Error dynamic payload with NRF24L01 and tmrh20 librairy
arduino
Comments
Post a Comment