2024-05-14 16:11:08 +03:00

72 lines
1.5 KiB
C++

//primary program
#include "Mirf.h"
#include "printf.h"
Nrf24l Mirf = Nrf24l(10, 9); // CE,CSN
union MYDATA_t {
byte value[32];
char now_time[32];
};
MYDATA_t mydata;
void setup()
{
Serial.begin(115200);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.payload = sizeof(mydata.value); // Set the payload size
Mirf.channel = 90; //Set the channel used
Mirf.config();
// Set my own address to RX_ADDR_P1
Mirf.setRADDR((byte *)"ABCDE");
// Set destination address to TX_ADDR
// Set ACK waiting address to RX_ADDR_P0
Mirf.setTADDR((byte *)"FGHIJ");
// Print current settings
printf_begin();
Mirf.printDetails();
// Clear RX FiFo
while(1) {
if (Mirf.dataReady() == false) break;
Mirf.getData(mydata.value);
}
}
void loop()
{
sprintf(mydata.now_time,"now is %lu",micros());
unsigned long startMillis = millis();
Mirf.send(mydata.value);
Serial.print("Wait for sending.....");
// Verify send was successful
if (Mirf.isSend()) {
Serial.print("Send success:");
Serial.println(mydata.now_time);
// Wait for received data
Serial.print("Wait for response.....");
while(1) {
if (Mirf.dataReady()) break;
}
Mirf.getData(mydata.value);
unsigned long diffMillis = millis() - startMillis;
Serial.print("Got response:");
Serial.print(mydata.now_time);
Serial.print(" Elapsed:");
Serial.print(diffMillis);
Serial.println(" mSec");
} else {
Serial.println("Send fail:");
}
delay(1000);
}