Mandare piu pacchetti alla volta utilizzando nrf24l01

starei utilizzando nrf24l01 per fare una macchinina telecomandata, e mi sto studiando la libreria di questo componente, per ora riesco a mandare un pacchetto (in questo caso controllare la velocita di un motore utilizzando un potenziometro) ma non riesco a capire come mandare piu pacchetti alla volta e che li manda ad ogni scopo, cioè.

Trasmettitore:
radio.write(&Motore_Avanti, sizeof(Motore_Avanti));

Ricevitore:
if (radio.available()){

radio.read(&Motore_Avanti, sizeof(Motore_Avanti));

analogWrite(velocita, Motore_Avanti);

}
e funziona ma perche sto controllando solo una cosa ora. Appena metto un led perche voglio che con un altro potenziometro invece controllo il fade del led; il ricevitore mi fa mandare tutto e non solo il led col suo relativo potenziometro.

in un primo momento pensavo che bastasse mettere nel:

if (radio.available()){ <----- dentro questa parentesi vuota, il nome int che avevo messo nel trasmettitore ovvero:

radio.write(&Motore_Avanti, sizeof(Motore_Avanti)); quindi di mettere dentro alla parentesi vuota il "Motore_Avanti".

ma senza successo, sbaglio qualcosa?
Grazie

Direi che il primo sbaglio è nel non aver postato il tuo codice completo (o almeno sufficientemente completo), e dentro al tag "code". Facci capire di cosa stai parlando, senza vedere quello che stai cercando di impostare o modificare non possiamo dire molto.

Buongiorno e benvenuto nella sezione Italiana del forum,

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

1 Like

Chiedo scusa, fatto.

... cosa? Non vedo alcun tuo post NELL'APPOSITA DISCUSSIONE ... :roll_eyes:

Guglielmo

ah, non avevo capito che esistesse una parte dedicata alle presentazioni, errore mio, avevo capito qua nel post

Vorrei usarli per fare una macchinina RC, ma ora sto risontrando altri problemi, lo sketch (l'unico) che mi funzionava ora nel ricaricarlo, non mi funziona piu ovvero, il primo trasmette i dati, il secondo li riceve ma non li usa.
Posto qua entrambi i sketch Trasmettitore:
Faccendo altri tentativi invece, appena controllo la seriale sul trasmettitore per vedere se mi legge il potenziometro, me lo fa vedere, appena gli metto le stringhe in cui deve inviarlo, mi rimane fisso a -256 anche se muovo il joystick.

usando lo sketch di un tutorial in cui nel trasmettitore nel loop fa cambiare ogni 1 sec lo stato di una variabile da 0 a 1, l'altro lo riceve e fa illuminare il led, e non ci sono problemi.

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>  //Include CE and CSN pins respectively
RF24 radio(7, 8);  //Create an address to identify the receiver
const byte address[6] = "00001";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(address);      //set the adress
  radio.setPALevel(RF24_PA_LOW);
  radio.stopListening();               //Set that module as transmitter
}

void loop() {

  delay(5);
  int val = analogRead(A0);             //Get the values from the potentiometer
  int value = map(val, 520, 1024, 0, 250);    //Convert these values from 0 to 180
  //Print these values on the serial monitor

  if (value > 30) {
    radio.write(&value, sizeof(value));     //Send these values to the receiver
  } else {
    int value = 0;
    radio.write(&value, sizeof(value));
  }



}

Sketch Ricevitore:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>  //Create an object for the RF library and enter the CE and CSN pins, respectively
RF24 radio(7, 8);  //Create an object for the servo library
const byte address[6] = "00001";
int led = 3;
int led2 = 13;

void setup() {
  //Begin the serial monitor and RF24 library
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_LOW);
  radio.startListening();
  pinMode(led, OUTPUT);
  pinMode(led2, OUTPUT);
}
void loop() {


  delay(5);
  int value = 0;
  int value2 = 0;
  if (radio.available()) {
    while (radio.available()) {

      radio.read(&value, sizeof(value));
      analogWrite(led, value);

    }
  }



}

Come richiesto al punto 7 del succitato regolamento, per favore edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona <code/> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE).

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

fatto

... non proprio come richiesto ... le indentature non sono corrette ...

grazie.

Guglielmo

non riesco a capire cosa sia questo IDE e comunque ctrl + T mi aprirebbe una pagina google e no, non ho un mac nel caso in cui mi dirai di usare il cmd T

... l'ambiente di sviluppo ufficiale di Arduino ... Arduino IDE ... quello che si scarica ufficialmente dalla sezione download.

Guglielmo

posso sapere come mai devo usare questo programma di arduino? cosa avrebbe di diverso da quello che sto usando ora? grazie

scusa non riesco a capire questa indentattura, riguardo invece al grado di "leggibilità" è quello che io riesco a fare, ho problemi a comunicare io grazie.

Ma perché ora cosa stai usando? (anche un'immagine basta)

ciao, starei usando arduino 1.8.19 aziche questo "IDE Arduino" che è la prima volta che lo sento, allego anche immagine, quello di sinistra è quello ultimo che ho dovuto scaricare ora mentre quello di destra è quello che uso sempre

Immagine 2023-06-23 144104

Anche quello di destra è l'IDE, solo la versione più vecchia che per ora è consigliabile continuare ad usare. Quindi li basta premere CTRL + T, o, indifferentemente, dal menu strumenti scegliere "formattazione automatica".

IDE sta per " Integrated Development Environment" ovvero "ambiente di sviluppo integrato" ed è quello che stai usando, indipendentemente dalla versione!

Se, come ti ho detto dall'inizio e come ti ha ripetuto Claudio_FF, tu apri il tuo programma nell'ambiente di sviluppo e, su Windows fai CTRL-T ti mette a posto l'indentatura delle varie righe.

Guglielmo

ok, ora ho capito, ri aggiusto il post precedente, grazie

Ma ricevi qualche cosa? E se in ricezione stampi il valore "value" ricevuto cosa ti da?

Guglielmo