Go Down

Topic: Wemos D1 code non fonctionnel (Read 99 times) previous topic - next topic

ChristiaM

Bonjour,
Dans le cadre d'un projet, nous essayons de faire communiquer deux NRF24L01+ à l'aide d'un code trouvé sur une revue : Hackable magazine no16.
Nous avons adapté le code à la Wemos D1 mais celui-ci ne semble pas fonctionner et nous sommes à court de solution !
Est-ce que quelqu'un aurait la gentillesse de voir si dans ce code il y a quelque chose qui cloche, vraisemblablement à partir de la ligne 56 car le print renvoie bien l'état du bouton ?

Code: [Select]

/* Croquis paru dans Hackable Magazine No 16
  Janvier et Fevrier 2017
  émetteur
*/

#include <SPI.h>
#include <RF24.h>

#define PIN_CS D1
#define PIN_CE D2
RF24 radio(PIN_CE, PIN_CS);

const uint64_t pipeA =
  0xF0F0F0F0E1LL;
const uint64_t pipeB =
  0xF0F0F0F0D2LL;
const int buttonPin = D4;     // the number of the pushbutton pin
int buttonState = 0;         // variable for reading the pushbutton status
const int ledTemoin = D3;      // the number of the LED temoin
int cpt = 0;
void setup() {
  pinMode(buttonPin, INPUT_PULLUP);  // initialize the pushbutton pin as an input:
  pinMode(ledTemoin, OUTPUT);
  digitalWrite(ledTemoin, LOW);       // initialize the ledTemoin
  Serial.begin(57600);
  Serial.println(F("Go go go !"));
  Serial.println("ok go");
  radio.begin();

  // Activer l'accuse de reception
  radio.enableAckPayload();
  // L'accuse de reception est dynamique
  radio.enableDynamicPayloads();

  // ------------- reglage des amplificateurs PA et LNA s'ils sont presents -----------
  // reglage de l'amplificateur
  radio.setPALevel(RF24_PA_LOW);
  //radio.setPALevel(RF24_PA_HIGH);

  // reglage des canaux/pipes
  radio.openWritingPipe(pipeB);
  radio.openReadingPipe(1, pipeA);

  // En ecoute
  radio.startListening();

}

void loop() {
  // Arret ecoute
  radio.stopListening();
  Serial.println(F("Envoi"));

  buttonState = digitalRead(buttonPin);// read the state of the pushbutton value:
  Serial.println(buttonState);
  // Utilisation de buttonState comme message
  unsigned long message = buttonState;
  // Envoi
  if (!radio.write(&message, sizeof(unsigned long) )) {
    Serial.println(F("erreur"));
  }
  // Mise en ecoute
  radio.startListening();
  Serial.println("mise en ecoute");
  // Enregistement du debut du delai
  unsigned long debut = micros();
  boolean timeout = false;

  // Tant que rien a lire
  while (!radio.available()) {
    // 600ms de passe, on abandonne
    if (micros() - debut > 600000) {
      timeout = true;
      Serial.print("break");
      break;
    }
  }

  // abandon pour cause de delai ecoule ?
  if (timeout) {
    Serial.println(F("Erreur : timeout."));
  } else {
    // variable pour le message recu
    unsigned long reception;
    // lecture des donnees recues
    radio.read(&reception, sizeof(unsigned long));
    // enregistrement du moment de la reception
    unsigned long fin = micros();


    // Si le message a ete correctement recu la led s'allume

    if (message == 0 && message == reception) {
      Serial.println("reception OK");
      digitalWrite(ledTemoin, HIGH);
      delay(2000);
      digitalWrite(ledTemoin, LOW);
      cpt ++;
    }

  }
  delay(100);
}


Peut-être dans les ports utilisés ?
Merci
Christian

Go Up