Bonjour a tous,
J'ai réalisé un petit programme qui : lorsque l'on appuie sur un bouton (avec l'arduino nano), une demande est envoyée grâce à un émetteur nrf24l01 puis une information (ici état) est envoyée en retour (avec l'arduino uno) .
Le programme fonctionne mais je pense qu'on peut l'optimiser.
-Y aurait-il une autre façon de faire un "ping-pong" c'est à dire : envoyer une donnée (2) afin d'envoyer en retour une information (etat)
-De plus, savez vous pourquoi quand je ne fais pas un tableau (int donnée[]) mais j'envoie un entier (int donnée) je ne reçoit pas la bonne valeur (ici 2 ) mais 0 ?
Merci d'avance
Bonne journée
Paul
// NRF24L01
//----** ** ** * * ** * ecran de bord (nano)
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN 7
#define CSN_PIN 8
int data[1];
int etat[1];
const uint64_t adresse[] = {0x01, 0x02}; // adresse du canal de communication
RF24 radio(CE_PIN, CSN_PIN);
const int interupteur = 3;
void setup(void)
{
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(adresse[0]);
radio.openReadingPipe(1, adresse[1]);
pinMode (interupteur, INPUT_PULLUP);
radio.startListening();
}
void loop(void)
{
if (digitalRead (interupteur) == LOW) {
data[0] = 2;
radio.stopListening();
delay(100);
radio.write( data, sizeof(data) );
radio.startListening();
}
if ( radio.available() ) // si des données sont présentes
{
radio.read( etat, sizeof(etat) ); // lecture des données
Serial.print("etat=");
Serial.println(etat[0]);
}
}
// * * * * ** * (uno)
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN 7
#define CSN_PIN 8
const uint64_t adresse[] = {0x01, 0x02}; // adresse du canal de communication
RF24 radio(CE_PIN, CSN_PIN); // création de l'objet radio
int data[1];
int etat_piege;
void setup()
{
Serial.begin(9600);
etat_piege = 0;
radio.begin(); // initialisation du module NRF24L01
radio.openReadingPipe(1, adresse[0]); // configuration du canal de communication du module NRF24L01
radio.openWritingPipe(adresse[1]);
radio.startListening();
}
void loop() {
if ( radio.available() )
{
radio.read( data, sizeof(data) );
Serial.print("data=");
Serial.println(String(data[0]));
if (data[0] == 2) {
int etat[1];
etat[0]=4;
radio.stopListening();
delay(300);
radio.write( etat, sizeof(etat) );
radio.startListening();
}
}
}