Problema modulo nrf24l01

Salve a tutti! Ho un problema con la comunicazione wireless tramite il modulo NRF24L01. Sto cercando di far comunicare due Arduino (un nano e un mega) fra di loro e fin tanto che utilizzo codici di base (come questo) tutto funziona alla perfezione. Poi però come vado ad ampliare il progetto, non riesco a farli comunicare. Ad esempio sull'arduino che trasmette se aggiungo il codice per la lettura della corrente non invia più nulla. Ho scoperto che commentando una parte di codice, la comunicazione si interrompe dopo un minuto circa. Ad esempio così:

// Calculate Irms only
  double correnteIN /*= emon2.calcIrms(1480)*/;  
  double correnteOUT /*= emon1.calcIrms(1480)*/;

Qualcuno sa cosa possa fare? Credo che il problema sia prettamente software ma non escludo nulla. Grazie per l'aiuto!

È meglio se ci mostri tutto il codice

Mi sembra di capire, dalla sequenza dei tuoi post (se posso mi informo sempre) che stai tentando di leggere la produzione del solare fotovoltaico, e se hai margine accendere il clima. Sbaglio? Perché sarebbe il mio prossimo progetto.... Ci sei riuscito a leggere produzione e consumo? E a accendere il clima da Arduino? È difficile? Cosa hai usato? Scusa domande, ma facciamo a scambio, io aiuto te sul tuo problema, tu mi indichi la retta via....

Questo è il codice base che ho utilizzato e funziona perfettamente, infatti l'ho utilizzato per farmi un'idea della copertura sulla casa del segnale

#include 
#include 
#include 
#define CE_PIN   9
#define CSN_PIN 10
const uint64_t pipe = 0x7878787878LL; // Definisce il canale di trasmissione
RF24 radio(CE_PIN, CSN_PIN); // Stabilisce la comunicazione
int datatosend[1]={};
void setup()  
{
  radio.begin();
  radio.openWritingPipe(pipe);
}
void loop()  
{
  radio.write (datatosend, sizeof(datatosend)) ;
}

Mentre quello non funzionante è questo:

#include 
#include 
#include 
#include "EmonLib.h"        // Include Emon Library

#define CE_PIN   9
#define CSN_PIN 10
#define output A1      // output pin per rilevatore corrente
#define input A2        // input pin

const uint64_t pipe = 0x7878787878LL; // Definisce il canale di trasmissione
RF24 radio(CE_PIN, CSN_PIN); // Stabilisce la comunicazione

// Create an instance
EnergyMonitor emon1;
EnergyMonitor emon2;

int datatosend[1]={}; 

void setup()  
{
  // lettura della corrente in entrata e uscita ----------------------------------------------------------------------------------------------
  emon1.current(output, 36.69);             // Current: output pin, calibration.
  // calibration = valoreReale/valoreLetto*calibration (precedente)
  emon2.current(input, 36.69);              // input

  radio.begin();
  radio.openWritingPipe(pipe);
}

void loop()  
{
  // Calculate Irms only
  // commentando la trasmissione funziona per qualche minuto
  double correnteIN /*= emon2.calcIrms(1480)*/;  
  double correnteOUT /*= emon1.calcIrms(1480)*/;

  Serial.print("IN ");
  Serial.print(correnteIN);
  Serial.print("  OUT  ");
  Serial.println(correnteOUT);

  
  radio.write (datatosend, sizeof(datatosend)) ;
}
}

Standardoil: Mi sembra di capire, dalla sequenza dei tuoi post (se posso mi informo sempre) che stai tentando di leggere la produzione del solare fotovoltaico, e se hai margine accendere il clima. Sbaglio? Perché sarebbe il mio prossimo progetto.... Ci sei riuscito a leggere produzione e consumo? E a accendere il clima da Arduino? È difficile? Cosa hai usato? Scusa domande, ma facciamo a scambio, io aiuto te sul tuo problema, tu mi indichi la retta via....

Si è esattamente quello che sto cercando di fare in questo primo step, poi di idee per ampliare il progetto sono molte. Purtroppo però fra gli impegni e l'università ci sto mettendo parecchio tempo... Per leggere i consumi ho seguito la guida a questo link ed è stato piuttosto semplice nonostante fossi alle prime armi. Per quanto riguarda il condizionatore la difficoltà è di gran lunga maggiore e senza l'aiuto del forum e Lollo82 non sarei mai riuscito. Ora rimane da collegare il tutto ma sto riscontrando problemi... Se hai altre domande chiedi pure, anche in Direct, sarebbe bello poter aiutare finalmente qualcuno e non chiedere sempre e solo aiuto!

zioCri: . .

Mentre quello non funzionante è questo:

.
.
.
.

. .

Se hai altre domande chiedi pure, anche in Direct, sarebbe bello poter aiutare finalmente qualcuno e non chiedere sempre e solo aiuto!

Ritenta sarai più fortunato, il codice che hai messo non compila, quindi NON hai messo il codice corretto e quindi NON ti possiamo aiutare, come ho detto: ritenta! per il Direct: non leggo e non scrivo messaggi privati, TUTTO (tutto) quello che faccio è pubblico, grazie comunque

Scusami devo aver perso qualcosa nel copia e incolla perché a me funziona, questo è quello giusto:

#include 
#include 
#include 
#include "EmonLib.h"        // Include Emon Library

#define CE_PIN   9
#define CSN_PIN 10
#define output A1      // output pin per rilevatore corrente
#define input A2        // input pin

const uint64_t pipe = 0x7878787878LL; // Definisce il canale di trasmissione
RF24 radio(CE_PIN, CSN_PIN); // Stabilisce la comunicazione

// Create an instance
EnergyMonitor emon1;
EnergyMonitor emon2;

int datatosend[1]={}; 

void setup()  
{
  // lettura della corrente in entrata e uscita ----------------------------------------------------------------------------------------------
  emon1.current(output, 36.69);             // Current: output pin, calibration.
  // calibration = valoreReale/valoreLetto*calibration (precedente)
  emon2.current(input, 36.69);              // input

  radio.begin();
  radio.openWritingPipe(pipe);
}

void loop()  
{
  // Calculate Irms only
  // commentando funziona, senza no
  double correnteIN /*= emon2.calcIrms(1480)*/;  
  double correnteOUT /*= emon1.calcIrms(1480)*/;

  Serial.print("IN ");
  Serial.print(correnteIN);
  Serial.print("  OUT  ");
  Serial.println(correnteOUT);

  
  radio.write (datatosend, sizeof(datatosend)) ;
}

Io dicevo il direct tanto per dire, va bene anche qui!

E se ne commenti solo uno?

Ci avevo provato ma non va comunque. Ho notato però che riavviando il modulo che trasmette (con il codice senza commenti), riesce ad inviare i dati una volta. Non so proprio da cosa sia dovuto e non riesco a venire fuori

Stasera provo a caricare le librerie e vederci dentro, un programma del genere è semplicissimo, non dovrebbe avere casini...

Grazie mille, anche perché io ricordavo funzionasse, magari ricordo male. Avevo fatto la prova quest'estate e di tempo ne è passato, forse provai solo la semplice comunicazione come nel primo esempio. Comunque mi sono accorto che sul computer di casa (con il quale avevo fatto la prova quest'estate) non mi trova più né il mega né l'uno in uscita seriale mentre sul mio portatile si... lo dico per far più chiara la situazione generale perché magari il problema è un altro