Γεια σας. Έχω τον παρακάτω κώδικα. Θέλω να μεταφέρω ασύρματα με το nRF24L01 κάποιους αριθμούς αμφίδρομα. Όπως το έχω κάνει τώρα έχω επικοινωνία αλλά όχι αμφίδρομη. Τι λάθος έχω κάνει;
Οι αριθμοί 11,1 22,2 33,3 που στέλνω μεταφέροντα σωστά, Δεν μεταφέρεται ο αριθμός "datasend"
Σας ευχαριστώ
1:
Κώδικας:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "printf.h"
int address = 0x28; // 28 is the address
byte byte1, byte2, byte3, byte4;
RF24 radio (8, 9); //yours
struct dataStruct{
float p1;
float t1;
float s1;
}
transmitter1_data;
unsigned char ADDRESS0[5] =
{
0xb1,0x43,0x88,0x99,0x45
};
void setup()
{
radio.begin();
Serial.begin(9600);
printf_begin();
radio.setRetries(15,15);
radio.enableDynamicPayloads();
radio.setDataRate(RF24_250KBPS);
radio.setChannel(110);
radio.setPALevel(RF24_PA_MAX);
radio.openWritingPipe(ADDRESS0);
radio.openReadingPipe(0,ADDRESS0);
radio.stopListening();
}
void loop()
{
transmitter1_data.p1=11.1;
transmitter1_data.t1=22.2;
transmitter1_data.s1=33.3;
radio.stopListening();
bool ok=radio.write(&transmitter1_data, sizeof(transmitter1_data));
radio.startListening();
unsigned char dataRx;
radio.read( &dataRx, sizeof(unsigned char) );
Serial.print("Receive: ");
Serial.println(dataRx);
delay(100);
}
2:
Κώδικας:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "printf.h"
RF24 radio (8, 9);//yours
#define PLOAD_WIDTH 32 // 32 unsigned chars TX payload
byte pip;
byte pload_width_now;
unsigned char rx_buf[PLOAD_WIDTH]= {
0};
struct dataStruct1{
float p1;
float t1;
float s1;
}
transmitter1_data;
int datasend=1;
unsigned char ADDRESS2[1]= {
0xb2};
unsigned char ADDRESS3[1]= {
0xb3};
unsigned char ADDRESS4[1]= {
0xb4};
unsigned char ADDRESS5[1]= {
0xb5};
unsigned char ADDRESS1[5] =
{
0xb1,0x43,0x88,0x99,0x45
}; // Define a static TX address
unsigned char ADDRESS0[5] =
{
0xb0,0x43,0x88,0x99,0x45
}; // Define a static TX address
void setup()
{
radio.begin();
printf_begin();
Serial.begin(9600);
radio.setDataRate(RF24_250KBPS);
radio.enableDynamicPayloads();
radio.setChannel(110);
radio.setPALevel(RF24_PA_MAX);
radio.openWritingPipe(ADDRESS0);
radio.openReadingPipe(0,ADDRESS0);
radio.startListening();
delay(100);
}
void loop()
{
if ( radio.available(&pip) )
{
pload_width_now = radio.getDynamicPayloadSize();
radio.read( rx_buf, pload_width_now );
if(pip==1&&pload_width_now==sizeof(transmitter1_data))
{
memcpy(&transmitter1_data, rx_buf, sizeof(transmitter1_data));
Serial.print ("Device: ");
Serial.print (pip);
Serial.print(" P: ");
Serial.print(transmitter1_data.p1);
Serial.print(" T: ");
Serial.print(transmitter1_data.t1);
Serial.print(" S: ");
Serial.print(transmitter1_data.s1);
}
radio.stopListening();
datasend++;
radio.write( &datasend, sizeof(char) );
radio.startListening();
Serial.print(" Send : ");
Serial.println(datasend);
}
}