Salve a tutti, sto realizzando un sistema di trasmissione di dati via nRF24L01. Un Arduino invia e l'altro riceve.
Il problema che ho è nella parte di ricezione:
// http://www.bajdi.com
// Sending a struct with the nRF24L01 module
// Data to be sent is the reading of 2 analog pins
// Data received is the analog reading of 2 pins on the other Arduino
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(9,10); // make sure this corresponds to the pins you are using
const uint64_t pipes[2] = {
0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
void setup()
{
Serial.begin(57600);
radio.begin();
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
radio.startListening();
}
void loop(void)
{
typedef struct{
float accel_angle_x;
float accel_angle_y;
float accel_angle_z;
float unfiltered_gyro_angle_x;
float unfiltered_gyro_angle_y;
float unfiltered_gyro_angle_z;
float angle_x;
float angle_y;
float angle_z;
} GY_521_Data_Received;
GY_521_Data_Received Data_To_Print;
// radio stuff
if ( radio.available() )
{
bool done = false;
while (!done)
{
done = radio.read( &Data_To_Print, sizeof(Data_To_Print) );
}
}
// end of radio stuff
// serial print received data
Serial.println(Data_To_Print.accel_angle_x);
Serial.println(Data_To_Print.accel_angle_y);
Serial.println(Data_To_Print.accel_angle_z);
Serial.println(Data_To_Print.unfiltered_gyro_angle_x);
Serial.println(Data_To_Print.unfiltered_gyro_angle_y);
Serial.println(Data_To_Print.unfiltered_gyro_angle_z);
Serial.println(Data_To_Print.angle_x);
Serial.println(Data_To_Print.angle_y);
Serial.println(Data_To_Print.angle_z);
// end of serial printing
}
Ricevo soltanto:
0.00
0.00
0.00
0.00
0.00
-0.00
0.00
-32.88
0.00
0.00
ovf
ovf
0.00
ovf
0.00
0.00
-32.88
Allego anche il file di trasmissione. Come posso risolvere? Dovrei visualizzare i valori di GY-521 inviati...
In poche parole devo inviare dei valori float di un MPU6050 e poi leggerli e "spacchettarli" per scriverli su seriale.
Trasmissione_Barca_RC.ino (38.6 KB)