Problemi libreria RF24

Ciao a tutti ragazzi :smiley:

Ho un arduino uno ed ho comprato da poco 2 antenne nrf24l01 + pa + lna… Adesso il problema è che sto facendo una libreria che usa la libreria RF24 (per scopi personali). Il fatto è che se provo ad includere la libreria RF24 da un codice .h e .cpp mi da degli errori strani (posto qui sotto codice ed errori).

(Gli errori ci sono anche semplicemente importando la libreria da me creata… non è un problema di arduino perchè esce anche facendo solo “Verifica”, senza caricarlo su arduino)

Son dei bug della libreria RF24? :frowning:

UtNRF24L01.h (382 Bytes)

UtNRF24L011.cpp (1.22 KB)

RF24Errore.txt (15.8 KB)

Buonasera, essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente [u]evitando[/u] di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :)

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)

Salve, sorry per quello che ho fatto.. ho letto il regolamento e mi sono presentato :D

Il problema è che non riesco a togliere i file allegati (che dovrei inserirli tra il tag code, ma non so se il codice è troppo lungo.. penso di si)

Dall'errore che leggo sembrerebbe che o non hai chiamato il costruttore della classe RF24 o non gli hai passato i parametri che richiede (minimo uno massimo tre).

Oltre ai moduli della libreria posta anche il tuo codice (...mi raccomando, se lo metti direttamente nel post, in conformità al regolamento, punto 7, il codice va racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone ... primo a sinistra).

Guglielmo

Questo è il codice Arduino:

#include 
#include 

//Joystick Movement pins
const int pinJMX = A5;
const int pinJMY = A0;
const int pinJMZ = 4;

//Radio Controller pins
const bool listener = false;
const int pinCE = 10;
const int pinCSN = 9;
const byte address[6] = "00001";
const char PALevel = 'm';

UtJoystick joystickMovement = UtJoystick(pinJMX, pinJMY, pinJMZ);

UtNRF24L01 radioController = UtNRF24L01(listener, pinCE, pinCSN, address, PALevel);

void setup() {
  
}

void loop() {
  int data = joystickMovement.getX();
  radioController.write(&data);
  delay(100);
}

Il problema che risontri non è nel tuo codice, ma nella libreria che stai usando, la UtNRF24L01, la quale include una libreria RF24 (che NON hai allegato) e che la istanzia senza passare alcun parametro:

class UtNRF24L01
{
    private:
    RF24 radio;
    bool _listener;

... come vedi, la riga "RF24 radio;" istanzia la classe, ma [u]non gli passa alcun parametro[/u] e, l'errore che tu riporti è proprio:

C:\Users\Antonio\Documents\Arduino\libraries\UtNRF24L01\UtNRF24L011.cpp: In constructor 'UtNRF24L01::UtNRF24L01(bool, int, int, byte*, char)':

C:\Users\Antonio\Documents\Arduino\libraries\UtNRF24L01\UtNRF24L011.cpp:6:90: error: no matching function for call to 'RF24::RF24()'

 UtNRF24L01::UtNRF24L01(bool listener, int pinCE, int pinCSN, byte address[], char PALevel)

                                                                                          ^

In file included from C:\Users\Antonio\Documents\Arduino\libraries\UtNRF24L01\UtNRF24L01.h:6:0,

                 from C:\Users\Antonio\Documents\Arduino\libraries\UtNRF24L01\UtNRF24L011.cpp:2:

C:\Users\Antonio\Documents\Arduino\libraries\RF24/RF24.h:124:3: note: candidate: RF24::RF24(uint16_t, uint16_t, uint32_t)

   RF24(uint16_t _cepin, uint16_t _cspin, uint32_t spispeed );

   ^

C:\Users\Antonio\Documents\Arduino\libraries\RF24/RF24.h:124:3: note:   candidate expects 3 arguments, 0 provided

C:\Users\Antonio\Documents\Arduino\libraries\RF24/RF24.h:110:3: note: candidate: RF24::RF24(uint16_t, uint16_t)

   RF24(uint16_t _cepin, uint16_t _cspin);

   ^

C:\Users\Antonio\Documents\Arduino\libraries\RF24/RF24.h:110:3: note:   candidate expects 2 arguments, 0 provided

C:\Users\Antonio\Documents\Arduino\libraries\RF24/RF24.h:51:7: note: candidate: constexpr RF24::RF24(const RF24&)

 class RF24

       ^

C:\Users\Antonio\Documents\Arduino\libraries\RF24/RF24.h:51:7: note:   candidate expects 1 argument, 0 provided

C:\Users\Antonio\Documents\Arduino\libraries\RF24/RF24.h:51:7: note: candidate: constexpr RF24::RF24(RF24&&)

C:\Users\Antonio\Documents\Arduino\libraries\RF24/RF24.h:51:7: note:   candidate expects 1 argument, 0 provided

Forse stai usando librerie di versioni diverse, pescate qua e la, che sono incompatibili tra loro ::)

Guglielmo

Ah si scusa, non ho messo la libreria.. Il link di github è questo http://tmrh20.github.io/RF24/ (la libreria è la stessa in tutti i file, ho scaricato solo quella)

Per quanto riguarda la classe RF24 radio, avevo prima istanziato la classe (solo nel file .cpp) nel costruttore della classe UtNRF24L01... il problema è che la variabile radio mi serve anche fuori dal costruttore. Quindi avevo pensato di istanziarla nel file header... però il costruttore RF24 ha bisogno di parametri per funzionare, i quali li prendo dal costruttore UtNRF24L01.. quindi nel file header non posso metterci i parametri (perchè ancora non li ho).

Non so se mi son spiegato bene :(

Scusate ma quindi è un problema della libreria? (la libreria RF24 scaricabile dall'arduino ide)

No, è che nel costruttore DEVI passargli i parametri che vuole … o devi modificarla per poterglieli passare in un secondo momento.

Guglielmo

E come si fa a passare gli argomenti del costruttore in un secondo momento? (Sorry per la domanda magari stupida, ma dato che i dati da passare al costruttore all'inizio non li ho, non posso passarli all'inizio..)