Comunicazione tra due moduli - nRF24L01

Salve a tutti, vorrei porre questo mio problema alla vostra attenzione.
Ho collegato due moduli nRF24L01 rispettivamente ad un arduino nano e ad un arduino uno.
Il codice che ho caricato e che vi ho allegato di seguito è stato preso da internet per utilizzarlo come test.
Caricando lo sketch che vi allego di seguito, il tutto funziona… Il client invia i versi della Divina Commedia e il server li riceve e li visualizza sul monitor seriale.

Ora ho un problema vorrei sostituire la stringa contenente i versi della Divina Commedia con una costante intera ad esempio di valore “1”.

Come posso fare?

Vi ringrazio per l’attenzione, saluti
gabry00!

Codice client

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define MIRF_PAYLOAD 32
byte rxData[MIRF_PAYLOAD + 1];
byte txData[MIRF_PAYLOAD + 1];
const char msg[]= "Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura, che' la diritta via era smarrita. Ahi quanto a dir qual era e' cosa dura, esta selva selvaggia e aspra e forte, che nel pensier rinova la paura! Tant'e' amara che poco e' piu' morte; ma per trattar del ben ch'i' vi trovai, diro' de l'altre cose ch'i' v'ho scorte. Io non so ben ridir com'i' v'intrai, tant'era pien di sonno a quel punto che la verace via abbandonai.";
int msgIndex = 0;
void setup(){
  memset(rxData, 0, sizeof(rxData));
  memset(txData, 0, sizeof(txData));
  Serial.begin(9600);
  Mirf.cePin = 8;
  Mirf.csnPin = 7;
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte*)"clie1");
  Mirf.payload = MIRF_PAYLOAD;   
  Mirf.channel = 10;
  Mirf.config();
}
void loop() {
  Mirf.setTADDR((byte*)"serv1");
  memcpy(txData, msg + msgIndex, MIRF_PAYLOAD);
  Mirf.send(txData);
  while(Mirf.isSending()){
  }
  delay(10);
  unsigned long time = millis();
  while(!Mirf.dataReady()){
    if (( millis() - time ) > 1000) {
      Serial.println("timeout");
      return;
    }
  }
  Mirf.getData(rxData);
  Serial.println((const char*)rxData);
  msgIndex += MIRF_PAYLOAD;
  if (msgIndex + MIRF_PAYLOAD > sizeof(msg)) {
    msgIndex = 0;
  }
}

Codice server

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define MIRF_PAYLOAD 32
byte rxData[MIRF_PAYLOAD + 1];
byte txData[MIRF_PAYLOAD + 1];
void setup(){
  memset(rxData, 0, sizeof(rxData));
  memset(txData, 0, sizeof(txData));
  Serial.begin(9600);
  Mirf.cePin = 8;
  Mirf.csnPin = 7;
  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR((byte*)"serv1");
  Mirf.payload = MIRF_PAYLOAD;   
  Mirf.channel = 10;
  Mirf.config();
}
void loop(){
  memset(rxData, 0, sizeof(rxData));
  if(!Mirf.isSending() && Mirf.dataReady()){
    Mirf.getData(rxData);
    Serial.println((const char*)rxData);
    Mirf.setTADDR((byte*)"clie1");
    for (unsigned i = 0; i != MIRF_PAYLOAD; ++i) {
      txData[i] = rxData[i] + 1;
    }
    Mirf.send(txData);
  }
}

ciao. Io sto usando questi moduli con la libreria RF24 e ho preso "ispirazione" (taglia e cuci :)) da questo sito. Lo sketch di esempio l'ho trovato molto più "digeribile".

ciao pippo72

Grazie pippo, proverò con i tuoi consigli…

Ciao

Devi impostare il payload a 1 se un carattere è quello che devi trasmettere e indirizzare il send ad un pezzo di memoria contenente il dato da trasmettere

Mirf.payload = sizeof(char); char c = 't'; Mirf.send((byte *)&c);

camaiocco