Bonjour,
J'essaie de faire communiquer 2 arduino entre eux avec des modules NRF24L01. Mais (comme vous vous en doutez ) ça ne marche pas.
Je doit lire l'état d'un bouton sur une télécommande et puis l'envoyer sur le recepteur et simplement le faire s'afficher sur le moniteur série. J'ai déjà vérifier que l'état du bouton était bien reçu sur la télécommande avec son moniteur série.
Quand je regarde le moniteur série du récepteur, pluseurs zéro puis 3 ou 4 nombre "aléatoires" se suivent en continu que le bouton soit ouvert ou fermé.
Voici un exemple de ce que je vois :
18:19:46.737 -> Etat bouton : 16448
18:19:46.772 -> Etat bouton : 0
18:19:46.772 -> Etat bouton : 16448
18:19:46.805 -> Etat bouton : 16448
18:19:46.839 -> Etat bouton : 0
18:19:46.839 -> Etat bouton : 30326
18:19:46.874 -> Etat bouton : 0
18:19:46.874 -> Etat bouton : 30326
18:19:46.908 -> Etat bouton : 0
18:19:46.942 -> Etat bouton : 30326
18:19:46.942 -> Etat bouton : 0
18:19:46.976 -> Etat bouton : 30326
18:19:46.976 -> Etat bouton : 30326
Voici le code de la télécommande :
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define RF24_CE 7
#define RF24_CS 8
#define MonAdresse (uint8_t *) "MySat"
RF24 radio(RF24_CE,RF24_CS);
int n;
void setup (void){
Serial.begin(9600);
Serial.println("Emetteur RF24");
radio.begin();
radio.setChannel(10);
radio.setAutoAck(false);
radio.openWritingPipe(MonAdresse);
pinMode(2, INPUT_PULLUP);
}
void loop () {
int sensorVal = digitalRead(2);
Serial.print("Valeur bouton : ");
Serial.println(sensorVal);
radio.write(&sensorVal, sizeof(sensorVal));
delay(10);
}
Et celui du récepteur :
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define RF24_CE 7
#define RF24_CS 8
#define TonAdresse (uint8_t *) "MySat"
RF24 radio(RF24_CE,RF24_CS);
void setup () {
Serial.begin(9600);
Serial.println("Recepteur RF24");
radio.begin();
radio.setChannel(10);
radio.setAutoAck(false);
radio.openReadingPipe(1,TonAdresse);
radio.startListening();
}
int valBout;
void loop (void) {
if ( radio.available() ) {
radio.read(&valBout, sizeof(valBout));
Serial.print("Etat bouton : ");
Serial.println(valBout);
}
}
Il y a surement de bêtes fautes, excuser moi : je débute
Et si vous vous demandez pourquoi je fais ça, c'est parce que je participe à Robotix's Junior (équivalent belge des Trophés de Robotique)
D'avance merci pour votre aide,
Benjamin